【发布时间】:2013-02-19 17:03:56
【问题描述】:
给定以下代码
#include <stdlib.h>
#include <stdio.h>
typedef struct Foo {
int **bar;
}Foo;
int main(){
Foo *foo = malloc(sizeof(Foo));
foo->bar = malloc(sizeof(int**));
int *tmp = malloc(sizeof(int)*2);
tmp[0]= 0;
tmp[1]=1;
*(foo->bar) = tmp;
//printf("%d",*(foo->bar)[1]); <=== This line
int *tmp2 = *(foo->bar);
printf("%d ",tmp2[1]);
return 0;
}
注释掉的行会导致分段错误。
谁能解释一下到底发生了什么?
为什么那行和下一个打印语句不等价?
谢谢
【问题讨论】:
标签: c pointers dereference