的內存分配考慮下面的C代碼 -無法瞭解結構
typedef struct node
{
int data;
}node;
int main()
{
node *temp;
temp->data=100;
printf("%d",temp->data);
return 0;
}
它給Segmentation fault
在含有temp->data=100;
因爲(我認爲)線我還沒有爲它分配內存。所以,沒有什麼比如temp->data
。
但是,當我嘗試 -
int main()
{
node *temp,*n;
n=(node*)malloc(sizeof(node));
n->data=100;
temp->data=n->data;
printf("%d",temp->data);
retrun 0;
}
它給適當的輸出100 我沒有分配內存,其中temp
必點。但我仍然複製n->data
到temp->data
。怎麼樣 ??
這兩個程序都是不正確的 - 它只是碰巧一個*顯示*工作,而另一個不工作。 –
未定義的行爲。它也可能會像第一個一樣崩潰(並且可能會對一些編譯器產生影響)。 –