Я пытаюсь динамически выделить память в куче, а затем удалить выделенную память. Ниже приведен код, который доставляет мне трудности:
// 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;
}
Вот ошибка, которую я получаю, когда компилятор пытается удалить CharArray:
0xC0000005: место чтения нарушения прав доступа 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
, когда вы закончите построение по умолчанию? - person GManNickG   schedule 28.04.2010