Test 函数的语句GetMemory(str, 200)并没有使str 获得期望的内存,str 依旧是NULL,为什么?void GetMemory(char *p, int num){p = (char *)malloc(sizeof(char) * num);}void T...
全文
回复(11) 2005-07-30 21:22 来自版块 - c/c++入门(VC,KeilC使用)
表情
hhyjmd10楼的说的不错,我想是系统给p的副本_p分配了内存,只是p没得到内存,这时会内存泄露。(2005-08-03 20:18)
seleneFox你不是没有得到内存,是得到了内存以后没有返回给你接受内存地址的指针里(2005-08-03 16:29)
hhyjmd嗯,知道了,我发现自己又懂了很多。 谢谢(2005-08-02 11:05)
znsoft没有错误处理或seh处理,在c++中最好把malloc改成new/delete. 以下代码只能在c++ 编译器中通过. void GetMemory(char * & p, int num) { p = (char *)malloc(sizeof(char) * num)...(2005-08-01 21:35)
znsoft没必要理解成数组什么的. 当然,数组和指针是等价的. 一维数组名相当于一级指针. 二维数组名相当于二级指针 你的想法是对指针本身赋值,只能按我给出的方法,否则原始的指针就没有值.即使你传指针进去,指针本身也是一个变量,函数的参数相当于局部变量,你的原来的代码只是对局域变量赋值....(2005-08-01 21:33)
hhyjmd谢谢znsoft的热心回答,我这样理解不知道对不对: p就相当于是一个数组名,p = (char *)malloc(sizeof(char) * num);显然就不对了, 而*p = (char *)malloc(sizeof(char) * num); 就相当于char *p=...(2005-08-01 20:20)
znsoftbool GetMemory(char **p, int num) { *p = (char *)malloc(sizeof(char) * num); if(*p) return true; else return false; } void Test(void) { cha...(2005-08-01 00:14)
znsoftmalloc不出内存也正常,不过比较少见.当你的物理或虚存不够时,就会出错,最好判断一下指针是不是空的.或者用seh处理一下. 这样不处理95%时候不会出错,但一出错就是当机或非法操作之类的.hehe(2005-08-01 00:11)
maqian你怎么知道没分配到内存?znsoft不是说了么,你的代码是错的。没能分配到内存的情况太罕见了。(2005-07-31 21:33)
hhyjmd谢谢znsoft的回答,不过我更想知道为什么p = (char *)malloc(sizeof(char) * num); 没能分配到内存,也就是说到底c++内部是如何分配内存的阿(2005-07-31 10:33)

返回顶部