-3
我正在處理分配塊中使用此頭的內存。我正在嘗試使用指針算術來返回新的區域。 這是一個簡單的問題。當我將1,2,3添加到整數地址時,編譯器會帶來下一個第一個,第二個,第三個整數地址,並且它們都按sizeof(int)變化。 但是在這個碼的結構是大小爲8和地址的變化替換地由2和8赫雷什一個代碼,與輸出我得到:添加時struct的地址不一致差異
#include <stdio.h>
#include <stdlib.h>
typedef struct header {
int size;
int magic;
}header;
int main() {
int n = 10;
printf("size of int %d\n", sizeof(n));
printf("addr %p\n", &n);
printf("addr+1 %p\n", &n+1);
printf("addr+2 %p\n", &n+2);
printf("addr+3 %p\n", &n+3);
header *h = malloc(sizeof(header));
printf("size of header %d\n", sizeof(header));
printf("addr %p\n", h);
printf("addr+1 %p\n", h+1);
printf("addr+2 %p\n", h+2);
printf("addr+3 %p\n", h+3);
return 0;
}
OUTPUT
size of int 4
addr 0xbfeb7898
addr+1 0xbfeb789c
addr+2 0xbfeb78a0
addr+3 0xbfeb78a4
size of header 8
addr 0x8706008
addr+1 0x8706010
addr+2 0x8706018
addr+3 0x8706020
您的計算器必須打破。 – juanchopanza