如何更正警告:从不同大小的整数转换为指针 [-Wint-to-pointer-cast]

How to correct warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]

我有一个 class 带有缓冲区,稍后通过读取文件填充该缓冲区:

char* m_buffer;

... 在 class 析构函数中,我执行以下操作:

int i;
for(i=0; i < m_size; i++) {
  delete (char*)m_buffer[i];
}
delete m_buffer;

我在 delete (char*)m_buffer[i] 收到编译器警告:

warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]

我已经阅读了一些关于类似问题的其他问题,但我无法理解这些解决方案如何应用。

更新 并回复评论:
m_buffer初始化如下:

m_buffer = new char[m_size];

如果 m_buffer 是一个数组,那么只需使用:

delete [] m_buffer;

不需要单独删除它的元素。

delete 旨在释放由 new 分配的对象。所以重要的问题是,你如何分配m_buffer? 在您当前的代码中,它似乎是一个数组,因为您遍历了 one 的元素并在删除它之前将每个元素转换为 char * 。 如果你用new m_buffer[m_size]分配了m_buffer,那么正确的方法是delete[] m_buffer