如何更正警告:从不同大小的整数转换为指针 [-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
。
我有一个 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
。