删除char指针数组

时间:2011-10-09 00:56:58

标签: c++ char delete-operator

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

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

我收到了这个错误:

  

HEAP CORRUPTION DETECTED:正常阻止后(#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] = '\0';
    delete[] myString; //error occurs here
}

现在,我知道,这段代码是完全不切实际的,但它仍然会抛出我想要解决的错误,所以如果我们可以解决这个问题,那么我应该在我的路上愉快。从我读到的这应该没问题?我将重申,对于本次练习,我不能使用std::string

1 个答案:

答案 0 :(得分:7)

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

myString = new char[length + 1];

方括号将创建一个数组。普通括号只会分配一个构造函数占用一个操作数。