2011-10-09 4 views
1

char * 배열을 삭제하고 싶습니다. 간단할까요? char * = new char[length]; 다음 delete[] char;을 사용 하시겠습니까?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 
} 

, 나도 알아,이 코드는, 그러나 그것은 여전히 ​​같은 오류를 완전히 비현실적 발생되는 I 우리가 이것을 해결할 수 있다면 그렇게 해결하려고 노력하고 있습니다. 나는 도중에 기분 좋게해야합니다. 내가 읽은 바로는 이것이 OK 일 것입니다. 나는이 운동을 위해 std::string을 사용할 수 없다는 것을 반복 할 것이다.

답변

7

대괄호가 엉망이되었습니다. 다음과 같아야합니다.

myString = new char[length + 1]; 

대괄호는 배열을 생성합니다. 보통 대괄호는 하나의 피연산자를 취하는 모든 생성자와 함께 하나만 할당합니다.

+0

오, 나 자신이 싫어. 매우 효과적이었습니다. 감사합니다. 최대한 빨리 답변을드립니다. – Jace