Objective-C/C에서 오는 C++을 배우고 있으며 더미 프로젝트의 경우 Mac OS X 컴퓨터에 저장된 /usr/share/dict/words
파일의 단어를로드하려고합니다.문자열의 C++ 동적 배열
파일을로드하고 각 단어를 배열로 가져 오는 것이므로 유형의 array
이 있습니다.
하지만 배열에 동적 메모리가 올바르게 작동하는 데 문제가 있습니다. new
및 delete
을 사용하고 있습니다. 누군가가 도와 수 있다면 ...,
를 아래 코드의 일부를 추가 한 그래서 내가 메모리 오류 받고 있어요 :
word:: A
word:: a
word:: aa
word:: aal
definitions(2758) malloc: *** error for object 0x100103b90: incorrect
checksum for freed object - object was
probably modified after being freed.
*** set a breakpoint in malloc_error_break to debug
로드 단어 :
string* Definition::loadWords()
{
int arrayLength = 0;
arrayOfWords = new string[arrayLength];
ifstream file;
file.open("/usr/share/dict/words");
if(file.is_open())
{
while(file.good()){
string word;
getline(file, word);
this->addWord(word, arrayOfWords, &arrayLength);
}
}
file.close();
cout << endl << "There are " << arrayLength << " words" << endl;
return arrayOfWords;
};
추가
void Definition::addWord(string newWord, string currentArray[], int* arrayLength)
{
cout << endl << "word:: " << newWord;
string *placeholderArray = new string[*arrayLength + 1];
placeholderArray[*arrayLength + 1] = newWord;
for(int i = 0; i < *arrayLength; i++){
placeholderArray[i] = currentArray[i];
}
(*arrayLength)++;
currentArray = placeholderArray;
delete [] placeholderArray;
}
스위치 :
여기 벡터를 사용하기위한 가이드이다. –