微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

提示编译器 void * 指向归零的内存

如何解决提示编译器 void * 指向归零的内存

许多现代架构使用所有位都设置为零的类型,在这种情况下:

yum update httpd
Loaded plugins: extras_suggestions,langpacks,priorities,update-motd
No packages marked for update


yum install httpd
Loaded plugins: extras_suggestions,kernel-livepatch,update-motd
amzn2-core                                                                                                                                                                           | 3.7 kB  00:00:00     
Package httpd-2.4.46-2.amzn2.x86_64 already installed and latest version
nothing to do

为了完全兼容,我还将分配结构中的所有指针显式设置为 NULL。如果我直接调用 calloc(或任何使用 calloc 的代理函数),编译器可以确定 calloc 分配的内存已经为 x86 的 NULL 正确清零,并简单地删除显式 NULL 分配,但如果我使用函数指针来调用 calloc 显然不能推断出来。如何提示 gcc(或 MSVC)可以安全删除这些分配?

代码示例:

void *p;
memset(&p,sizeof(p));
assert(p == NULL); /* assertion holds on most architectures */

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。