以下代码片段的含义是什么?
int* pointer = malloc (sizeof(int) + 3);
pointer++;
分配的内存块无法被拆分成 sizeof(int)
的块。所以当指针要跳到下一个“块”时会发生什么?这是否已经定义好了呢?
int
长度为四个字节的平台上,当访问这段内存时会遇到麻烦,因为malloc
只为你分配了七个字节。但通常它会进行一些边界对齐,所以你可能会得逞。只要增加指针就是完全有效的。访问它指向的内存(你的代码片段没有这样做)是无效的。 - Floris