メモリ割り当てエラーを理解するのに助けが必要です。私はこのエラーを受け取り続けます:
エラー:メモリを割り当てることができませんでした。
...fList
次のコードでが大きい場合:
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>
。
この関数xInitFile
は、次のプロトタイプを持つC共有ライブラリ関数です。
int xInitFile(char *fName, int fHandle)
fList
が小さい場合は、すべてが正常に実行されます。問題は文字列をに変換する方法にあると確信していますがchar *
、修正方法がわかりません。私の知る限り、fName
は常に削除されているので、メモリリークのようには見えません。コードの実行中にもメモリ使用量が急増しません。
編集:
コメントアウトするerr = xInitFile(fName, ii+1);
とエラーがなくなります。つまり、割り当てエラーが発生しているというxInitFile
ことですよね?問題は私のコードにあると思ったので、これを以前に試すことは考えていませんでした(b /c私はC++を初めて使用します)。