将字符串转换为字符*时出现内存分配错误
memory allocation error while converting string to char*
我需要一些帮助来确定内存分配错误。我不断收到此错误:
错误:无法分配内存。
。当以下代码中的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++新手(。
它可能出于某种原因而皱眉,但我倾向于尝试strdup
。
char *fName = strdup( fList[ii].c_str() );
搭配
free(fName);
相关文章:
- Win32编译器选项和内存分配
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- 当需要超过16GB的连续内存时,内存分配失败
- 尝试摆脱任何堆内存分配
- 以下代码执行哪种内存分配(动态或静态)?
- 开放 CV 中的动态内存分配,用于视频处理
- 为什么类和 main() 函数中也有动态内存分配
- 使用 NTAllocateVirtualMemory 和 GetProcAddress 的内存分配问题不起作用
- C++:矢量分配器行为、内存分配和智能指针
- 介于 [固定数组] 和 [带内存分配的指针] 之间的性能
- Linux C++ 中的页面对齐内存分配
- 整数内存分配/释放
- 将内存分配返回值强制转换为 TYPE 数组
- C++程序什么都不做,但瓦尔格林德显示内存分配
- 给定特定内存地址的数组的动态内存分配
- 如何完成内存分配
- 我刚刚了解了C++中的动态内存分配
- 在先前调用 string::find 后添加内存分配和内存集会导致它返回 npos.为什么?
- 对于堆上的页面对齐内存分配是否有任何优化或不同的 API?
- 无法删除布尔动态内存分配