繁体   English   中英

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

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

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有一个带有缓冲区的类,以后可以通过读取文件来填充它:

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];
2 个回复

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

delete [] m_buffer;

无需单独删除其元素。

delete旨在释放由new分配的对象。 因此,重要的问题是,如何分配m_buffer 在您当前的代码中,它似乎是一个数组,因为您遍历了一个元素并将每个元素转换为char *然后再将其删除。 如果为m_buffer分配了new m_buffer[m_size] ,则正确的方法是delete[] m_buffer

6 从不同大小的整数转换为指针[-Wint-to-pointer-cast]

好吧,我必须重新回答之前回答的问题。 我因其他原因做了一些改动,现在我又遇到了一个问题。 以下是相关细节: 使用演员表我会得到主题行中显示的错误。 没有演员,我得到: 传递'memcpy'的参数2使得整数指针没有强制转换 请注意,如果我使用strncpy,则会发生 ...

8 警告:从不兼容的指针类型进行分配[默认情况下启用],并从不同大小的整数强制转换为指针[-Wint-to-pointer-cast]

当我尝试运行我的代码时,出现警告,我不知道为什么....请帮助我,这是我的代码: 我在这些行上得到警告: 是因为GCC版本不同吗? 我该如何解决? 这是C编程,我得到了两个警告,例如警告:从不兼容的指针类型[默认启用]进行赋值,并从不同大小的整数[-Wint-to-point ...

2019-11-23 19:26:47 1 39   c
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM