我有一个带缓冲区的类,后来通过读取文件来填充:
char* m_buffer;
...在类析构函数中,我执行以下操作:
int i;
for(i=0; i < m_size; i++) {
delete (char*)m_buffer[i];
}
delete m_buffer;
我在delete (char*)m_buffer[i]
收到编译器警告:
警告:从不同大小的整数[-Wint-to-pointer-cast]
转换为指针
我已经阅读了一些有关类似问题的其他问题,但我无法理解这些解决方案的适用方式。
更新 并回答评论:
m_buffer
初始化如下:
m_buffer = new char[m_size];
答案 0 :(得分:7)
如果m_buffer
是一个数组,那么只需使用:
delete [] m_buffer;
无需单独删除其元素。
答案 1 :(得分:5)
delete
旨在释放由new分配的对象。所以重要的问题是,你如何分配m_buffer
?
在您当前的代码中,它似乎是一个数组,因为您在删除它之前迭代一个元素并将每个元素强制转换为char *
。
如果您使用m_buffer
分配了new m_buffer[m_size]
,那么正确的方法是delete[] m_buffer
。