如何在c ++中删除const数组

时间:2015-01-30 19:12:15

标签: c++

我是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)

我知道,这个问题被多次提出过。但我没有找到如何解决我的问题,也已经尝试了几种方法。

谢谢, 米哈伊尔

2 个答案:

答案 0 :(得分:6)

std::string::c_str返回指向char的内部string数组的指针。用户不能删除它,因为string - 对象本身将管理其生命周期。

此外,如果您不打算修改string,请将其作为const string&传递。如果您确实修改了string - 对象,请注意string上的某些操作会使.c_str()指针无效。

答案 1 :(得分:1)

由于您未使用new[],因此您必须使用delete[]。程序会自动删除它。