问题描述
- 关于面试提到的函数问题
-
面试时问到:我现在要封装malloc函数,以下两种封装形式哪种更好,为什么?
#define IN
#define OUTvoid myMalloc(IN int size, OUT void * p);
void * myMalloc(IN int size);第一个是以参数的形式来输出得到的内存地址,第二个是以返回值的形式来得到内存地址?哪个更好?问了很多人,没人说出个所以然来,不知哪个大神能解决下!!
解决方案
第一个好点,第二个容易忘记适当内存造成泄露
解决方案二:
楼主看看这个帖子就知道了http://bbs.chinaunix.net/thread-1279614-1-1.html
解决方案三:
第二种,写起来简便些
解决方案四:
两者都有,不同的使用习惯而已。没什么优劣
解决方案五:
亲在csdn上也看到你的提问了,我觉得是第二种,他考察的应该不是那些什么忘记释放内存什么的,我觉得是考察函数传递参数原理(考虑下值传递和指针传递),传递函数的参数,函数是另外复制了一个void *p的,操作的也是副本的void*p。
解决方案六:
亲在csdn上也看到你的提问了,我觉得是第二种,他考察的应该不是那些什么忘记释放内存什么的,我觉得是考察函数传递参数原理(考虑下值传递和指针传递),传递函数的参数,函数是另外复制了一个void *p的,操作的也是副本的void*p。
解决方案七:
亲在csdn上也看到你的提问了,我觉得是第二种,他考察的应该不是那些什么忘记释放内存什么的,我觉得是考察函数传递参数原理(考虑下值传递和指针传递),传递函数的参数,函数是另外复制了一个void *p的,操作的也是副本的void*p。
解决方案八:
亲在csdn上也看到你的提问了,我觉得是第二种,他考察的应该不是那些什么忘记释放内存什么的,我觉得是考察函数传递参数原理(考虑下值传递和指针传递),传递函数的参数,函数是另外复制了一个void *p的,操作的也是副本的void*p。
解决方案九:
亲在csdn上也看到你的提问了,我觉得是第二种,他考察的应该不是那些什么忘记释放内存什么的,我觉得是考察函数传递参数原理(考虑下值传递和指针传递),传递函数的参数,函数是另外复制了一个void *p的,操作的也是副本的void*p。
解决方案十:
哪种更好,关键是第一种能用吗?
你在调用的时候:
void* p;
myMalloc(IN int size, OUT void * p);
p是指针,也是按值传递的,并不能改变主函数里面p的值。
可以用myMalloc(IN int size, OUT void * &p);