赞
踩
偶认为:
这个问题是指针使用过程中很容易出错而且自己又很难发现的一个易疏忽问题-----------即:指针人为的更改了原来的指向地址。以下是一个很好的案例,其中红色字体为正确解。
问题:
用malloc与free出错,望指导,谢谢
程序很简单,用于测试他们的用法,因为在一个大点定程序中出错想找原因。
#include<stdlib.h>
void main()
{
char *test=malloc(100);
test="123";
free(test);
test=NULL;
}
问题补充:
哦,大概明白了点,谢谢。 我用sprintf(test,"23123141421%s",test1);给char *test赋值,但是如果不char*test=malloc();就出错,用了也用free就出错,不free就不出错。。。 为什么呢,请问?学习C不久。。。问题有点无趣,但就是不明白,请指教 谢谢
回答1:
前面我接到了,free()只用于释放动态分配的空间,即malloc()/calloc()/realloc()函数分配的空间,否则不会成功.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。