Tôi đã xem qua đoạn mã sau:Những bảo đảm nào mà malloc thực hiện về căn chỉnh bộ nhớ?
int main()
{
char *A=(char *)malloc(20);
char *B=(char *)malloc(10);
char *C=(char *)malloc(10);
printf("\n%d",A);
printf("\t%d",B);
printf("\t%d\n",C);
return 0;
}
//output-- 152928264 152928288 152928304
Tôi muốn biết làm thế nào việc phân bổ và đệm được thực hiện bằng malloc()
. Nhìn vào đầu ra tôi có thể thấy rằng địa chỉ bắt đầu là bội số của 8. Bất kỳ quy tắc nào khác?
Bất kỳ "quy tắc" nào bạn "tìm hiểu" bằng cách nghiên cứu những gì malloc thực hiện trên máy tính của bạn ... sẽ không được thực hiện ngay khi bạn chuyển sang máy tính khác hoặc thay đổi tùy chọn trình biên dịch hoặc giai đoạn thay đổi mặt trăng. .., ... :) – pmg
Để in một con trỏ, bạn thực sự nên sử dụng '"% p "' và truyền tới 'void *': 'printf ("% p ", (void *) A); ' – pmg
i dont thực sự hiểu câu hỏi của bạn. –