首页
社区
课程
招聘
[求助]这段对象大小检查的代码(GCC下的__builtin_object_size())不起作用
发表于: 2018-3-22 15:54 2878

[求助]这段对象大小检查的代码(GCC下的__builtin_object_size())不起作用

2018-3-22 15:54
2878
#include <stdio.h>

int main(char* argv[], int argc) {
	struct V { char buf1[10]; int b; char buf2[10]; } var;
	void *ptr = &var.b;
	printf("%d\n", __builtin_object_size(ptr, 0));
	printf("%d\n", __builtin_object_size(ptr, 1));
	printf("%d\n", __builtin_object_size(ptr, 2));
	printf("%d\n", __builtin_object_size(ptr, 3));
	printf("%d\n", sizeof(var));

	return 0;
}
请用GCC编译。
输出:
-1
-1
0
0
28
为什么对象大小检查不起作用?


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 677
活跃值: (24)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
看文档 https://gcc.gnu.org/onlinedocs/gcc/Object-Size-Checking.html

The built-in functions described below yield the best results when used together and when optimization is enabled.

不开-O优化的时候是无效的。-O2的输出结果是

$ ./test

16

4

16

4

28

2018-3-22 17:43
0
游客
登录 | 注册 方可回帖
返回
//