메모리 할당 오류를 알아내는 데 도움이 필요합니다. fList
다음 코드에서 큰 경우 ...문자열을 char로 변환하는 중 메모리 할당 오류 *
Error: Memory could not be allocated.
: :이 오류가 계속
for (unsigned int ii=0; ii<fList.size(); ii++) {
char *fName = new char[fList[ii].length() + 1];
strcpy(fName, fList[ii].c_str());
err = xInitFile(fName, ii+1);
if(err != 0) {
cout << "FOOBAR" << endl;
}
delete[] fName;
}
fList
가 std::vector<std::string>
이다. 작은
int xInitFile(char *fName, int fHandle)
fList
경우, 모든 것이 잘 실행 :
기능 xInitFile
는 다음과 같은 프로토 타입과 C 공유 라이브러리 기능입니다. 나는이 문제가 문자열을 char *
으로 변환하는 방법에 문제가 있음을 확신하지만, 문제를 해결하는 방법을 알 수 없다. 내가 알 수있는 한 fName
은 항상 삭제되므로 메모리 누수가되지 않습니다. 코드를 실행하는 동안 내 메모리 사용량이 급증하지 않습니다.
편집 :
이 err = xInitFile(fName, ii+1);
을 주석 오류를 제거합니다. 즉, 할당 오류는 xInitFile
에서 발생하고 있습니다. 문제가 내 코드에 있다고 생각했기 때문에 이전에이 코드를 시도하지 않았다 (b/c 나는 C++을 처음 사용함).
와 짝 '오류 :. 메모리 할당 할 수 없습니다'? 심지어 당신의 메모리 할당과 관련이 있습니까? 관련없는 코드 조각을 여기에 보여주고있는 것처럼 보입니다 ... –
for 루프 내부에서 fName을 삭제하면 더 좋지 않습니까? 그런 식으로 사용하고 즉시 삭제합니다. 당신이 삭제하지 않을 때부터 매 반복마다 fName에 대한 새로운 위치가 memorycongestion으로 이어진다. –
try/catch를 사용하여'new'로 줄을 감싸고 잡을만한 것으로 인쇄하십시오. 메시지를 보게되면이 오류는'new'에 의해 생성되고, 다른 경우에는'xInitFile'에 의해 생성됩니다. – borisbn