正在删除字符指针数组

Deleting char pointer array

本文关键字:指针 数组 字符 删除      更新时间:2023-10-16

我想删除一个char*数组,这应该很简单吧?char * = new char[length];然后使用delete[] char;

此外,我无法使用std::string进行此练习。

我得到这个错误:

检测到HEAP腐蚀:在正常块(#137(0x00794B50之后。
CRT检测到应用程序在堆缓冲区结束后写入内存。

这是我的代码:

class myClass
{
    char * myString;
    ...
public:
    myClass::myClass( const char * tempStr);
};
myClass::myClass( const char * tempStr)
{
    int length = strlen(tempStr);
    myString = new char(length + 1); //+1 for null char
    strcpy(myString, tempStr);
    myString[length] = '';
    delete[] myString; //error occurs here
}

现在,我知道,这段代码是完全不切实际的,但它仍然抛出了我试图解决的相同错误,所以如果我们能解决这个问题,那么我应该很高兴。从我读到的内容来看,这应该可以吗?我要重申,在这个练习中,我不能使用std::string

你把括号弄乱了。应该是:

myString = new char[length + 1];

方括号将创建一个数组。普通方括号将只分配一个,无论构造函数采用哪一个操作数。