我正試圖動態分配內存到堆中,然後刪除分配的內存。當編譯器嘗試刪除CharArrayC++初學者刪除代碼
// String.cpp
#include "String.h"
String::String() {}
String::String(char* source)
{
this->Size = this->GetSize(source);
this->CharArray = new char[this->Size + 1];
int i = 0;
for (; i < this->Size; i++) this->CharArray[i] = source[i];
this->CharArray[i] = '\0';
}
int String::GetSize(const char * source)
{
int i = 0;
for (; source[i] != '\0'; i++);
return i;
}
String::~String()
{
delete[] this->CharArray;
}
這是我得到的錯誤:下面是給了我一個很難的代碼
0000005:訪問衝突讀取位置0xccccccc0。
這裏是堆棧上的最後一次通話:
msvcr100d.dll的operator delete(void *的pUserData)線52 + 0x3字節C++
我相當肯定的這段代碼中存在錯誤,但會向您提供所需的任何其他信息。哦,是的,使用VS 2010的XP。
編輯:我的繼承人STRING.H
// String.h - string class
#pragma once
#define NOT_FOUND -1
class String
{
public:
String();
String(char* source);
static int GetSize(const char * source);
int Find(const char* aChar, int startPosition = 0);
~String();
private:
char* CharArray;
int Size;
};
完成默認構建時,「CharArray」的值是多少? – GManNickG 2010-04-28 00:31:38
你可以發佈你使用這個代碼嗎?我懷疑你可能有使用默認構造函數的代碼,這會使CharArray未初始化。 – kibibu 2010-04-28 00:32:20
爲什麼這個 - >會員當你只能說會員? – tiftik 2010-04-28 00:34:55