2011-10-09 46 views
1

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

另外,本人练习无法使用std::string

我得到这个错误:

HEAP CORRUPTION DETECTED: after Normal block (#137) 0x00794B50.
CRT detected that the application wrote to memory after end of heap buffer.

这里是我的代码:

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

回答

7

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

myString = new char[length + 1]; 

方括号将创建一个数组。正常的括号将只用一个操作数来分配任何构造函数。

+0

哦,我讨厌自己。非常感谢你,这工作,将标志为答案尽快。 – Jace