据我了解,您可以使用相同的变量名重新分配堆,它将在空间的不同位置分配内存。
但是,在此示例中,我在第二个malloc中为指针变量x获得了相同的内存地址。有什么想法吗?
void main()
{
int *x = (int*)malloc(sizeof(int)); //allocate space for int value
*x = 100; //dereference x for value
printf("The value of x is %i address is %p\n",*x, &x);
int *y = (int*)malloc(sizeof(int)); //allocate space for int value
*y = 150; //dereference x for value
printf("The value of y is %i address is %p\n",*y, &y);
x = (int*)malloc(sizeof(int)); //allocate space for int value
*x = 400; //dereference x for value
printf("The value of x is %i address is %p\n",*x, &x);
}
gcc给我这个:
The value of x is 100 address is 0xffffcc08
The value of y is 150 address is 0xffffcc00
The value of x is 400 address is 0xffffcc08
答案 0 :(得分:3)
printf("The value of x is %i address is %p\n",*x, &x);
&x
在这里给出变量x的地址,而不是变量所指向的地址。要获取其指向的地址,请使用以下命令:
printf("The value of x is %i address is %p\n",*x, (void *)x)