我有學習困難C語言的malloc和指針:C語言 - Malloc無限空間?
我學會爲止:
指針是內存地址的指針。
malloc()
分配內存位置並返回內存地址。
我試圖創建一個程序來測試malloc
和指針,這裏就是我有:
#include<stdio.h>
main()
{
char *x;
x = malloc(sizeof(char) * 5);
strcpy(*x, "123456");
printf("%s",*x); //Prints 123456
}
我期待一個錯誤,因爲我到malloc
提供的大小爲5,其中我把6個字符(123456)放到指針指向的內存位置。這裏發生了什麼?請幫幫我。
更新
在哪裏學習malloc和指針?我很困惑星號的事情,比如何時使用星號等。我不會休息,直到我學會這件事情!謝謝!
先生,我也嘗試'malloc(1)',並分配「123456」,仍然沒有錯誤。 – dpp
是的 - 因爲'malloc(1)'可能分配了8個字節......並且你沒有調用'free()'。將字符串改爲'「abcdefghijklmnopqrstuvwxyz」'並添加'free()',您很可能會看到它崩潰並燒燬。然而,關於未定義行爲的糟糕之處恰恰在於程序似乎可以在一段時間內使用它 - 然後突然間發現一些讓它們中斷的東西(一個新的平臺,一個新的編譯器,一個額外的函數調用,.. )。 –
+1的牆壁提示 –