我是C ++的新手。我的代码读取了数千张图像并执行图像处理。我想在函数中读取原始图像,所以我将带有它名称的字符串传递给函数,然后我创建常量char数组(只要我需要fopen
的const char。在函数结束时,我想删除它。但这引发了一个我无法解决的异常:
extern "C" void imreadTIFF(string location, int x, int y){
const char * c = location.c_str();
<code>
delete [] c;
}
Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
我知道,这个问题被多次提出过。但我没有找到如何解决我的问题,也已经尝试了几种方法。
谢谢, 米哈伊尔
答案 0 :(得分:6)
std::string::c_str
返回指向char
的内部string
数组的指针。用户不能删除它,因为string
- 对象本身将管理其生命周期。
此外,如果您不打算修改string
,请将其作为const string&
传递。如果您确实修改了string
- 对象,请注意string
上的某些操作会使.c_str()
指针无效。
答案 1 :(得分:1)
由于您未使用new[]
,因此您必须使用delete[]
。程序会自动删除它。