我想删除一个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
。
答案 0 :(得分:7)
你把括号弄乱了。它应该是:
myString = new char[length + 1];
方括号将创建一个数组。普通括号只会分配一个构造函数占用一个操作数。