【发布时间】:2014-01-07 09:21:19
【问题描述】:
我正在使用 gcc 4.7.2 编译 C 程序。我有一个带有一些偏移量的 void * 类型的地址。 (void* + size) 应该给出警告。如果不是,那么如果 size 为 1 且 size 为 50,它将添加多少字节。 我唯一关心的应该是警告我们正在向 void 指针添加一些东西?
12 int size = 50;
/*Allocate a block of memory*/
14 void *BlockAddress = malloc(200);
15 if(!BlockAddress)
16 return -1;
17 address1 = (int *)BlockAddress;
18 address2 = BlockAddress + 1*size;
19 address3 = BlockAddress + 2*size;
谢谢
【问题讨论】:
-
你可以检查一下,但我认为如果它有效,它会增加 4 个字节(指针大小)。除非您指定类型,否则编译器无法知道要添加多少字节。例如。对于 char 添加 1 个字节,对于 int 指针添加 4 个字节,依此类推。所以,我认为默认值将是 4 字节的指针大小。
-
是的,我已经检查过了。除非我编译并运行它,否则我的想法与您的想法相同,该程序编译时没有错误或警告。它是加 1 而不是 4,这就是为什么要问为什么会这样。?