當我改變函數中我調用malloc的位置時,出現分段錯誤。 此代碼正常工作並打印「結束\ n」。從哪裏調用malloc從哪裏來都沒關係? - c
#include <stdio.h>
#include <stdlib.h>
int main() {
int **pptr;
if (!(*pptr = malloc(4)))
return 1;
int *ptr;
if (!(ptr = malloc(4)))
return 1;
ptr[0]= 1;
printf("Point 1\n");
free(ptr);
(*pptr)[0] = 1;
free(*pptr);
printf("End\n");
return 0;
}
但是,這個看似等價的代碼在分段錯誤的「點1 \ n」之前結束。
#include <stdio.h>
#include <stdlib.h>
int main() {
int *ptr;
if (!(ptr = malloc(4)))
return 1;
ptr[0]= 1;
printf("Point 1\n");
free(ptr);
int **pptr;
if (!(*pptr = malloc(4)))
return 1;
(*pptr)[0] = 1;
free(*pptr);
printf("End\n");
return 0;
}
我在想什麼? (我是一個初學者)
其他信息:我在Ubuntu下使用gcc使用Netbeans。
首先閱讀如何使用'malloc'! – haccks
我讀了其他東西,其中包括http://www.cplusplus.com/reference/cstdlib/malloc/的參考頁面。對不起,這個愚蠢的錯誤,但我想我分配4個字節(我的系統中的一個int的大小),然後將指針指向該位置指向我的指針,然後檢查它是否爲null,以防萬一。也許其他新手也有同樣的困惑。 – niic