我不明白爲什麼整個事情都不起作用。malloc在函數中效果不好
我只想做malloc
在功能func
,當我從它返回時,malloc
消失......我得到
* glibc的檢測 ./test:免費():無效指針:0xb76ffff4 * *
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <errno.h>
int func(char *p) {
p=(char*)malloc(1);
*p='a';
printf("1. p= %c\n",*p);
return 0;
}
int main()
{
char *p;
func(p);
printf("2. p= %c\n",*p);
free(p);
return 0;
}
您試圖釋放無效指針。 'p'只是指針的一個副本。 – Maroun
C是[按值調用](http://en.wikipedia.org/wiki/Evaluation_strategy),其中有一個怪異的問題,當您將它們傳遞給函數時,它會變成指針。 –
通常在C中分配內存,然後傳遞給使用它的函數,然後在分配它的相同函數中釋放內存。 – LtWorf