当我更改调用 malloc 的函数中的位置时,出现分段错误。此代码工作正常并打印“End\n”。
#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;
}
然而,这个看似等效的代码在分段错误的“Point 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 下使用 Netbeans,使用 gcc。