C_and_CPP 版 (精华区)
发信人: seaboy (浪小), 信区: C_and_CPP
标 题: 如何传递动态内存(转)
发信站: 哈工大紫丁香 (2003年08月27日10:37:30 星期三), 站内信件
如果函数的参数是一个指针,不要指望用该指针去申请动态内存。
编译器总是要为函数的每个参数制作临时副本,指针参数p的副本是 _p,编译器使 _p =
p
。_p申请了新的内存,只是把_p所指的内存地址改变了,但是p丝毫未变。所以函数
getmem并不能输出任何东西。事实上,每执行一次getmem就会泄露一块内存,因为没有用
free释放内存。
如果非得要用指针参数去申请内存,那么应该改用"指向指针的指针"。
void getmem(char **p)
{
*p=(char*)malloc(100);
}
另外可以用函数返回值来传递动态内存。
char *getmem()
{
char *p=(char *)malloc(100);
return p;
}
--
才知道
原来
自己需要的是
100万
份勇气。。。
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.239.104]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.640毫秒