gpt4 book ai didi

c++ - 将字符串转换为 char* 时内存分配错误

转载 作者:太空宇宙 更新时间:2023-11-04 11:58:49 25 4
gpt4 key购买 nike

我需要一些帮助来找出内存分配错误。我不断收到此错误:

Error: Memory could not be allocated.

...当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;
}

fListstd::vector<std::string> .

函数xInitFile是具有以下原型(prototype)的 C 共享库函数:

int xInitFile(char *fName, int fHandle)

如果fList很小,然后一切正常。我很确定问题在于我如何将字符串转换为 char * ,但我无法弄清楚如何解决它。据我所知,fName总是被删除,所以它似乎不是内存泄漏。运行代码时,我的内存使用量也没有激增。

编辑:

注释掉 err = xInitFile(fName, ii+1);消除了错误。这意味着分配错误发生在 xInitFile 中。 , 正确的?我没有想过早点尝试这个,因为我认为问题出在我的代码中(b/c 我是 C++ 的新手)。

最佳答案

它可能出于某种原因不受欢迎,但我倾向于尝试 strdup

char *fName = strdup( fList[ii].c_str() );

配对

free(fName);

关于c++ - 将字符串转换为 char* 时内存分配错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15006608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com