我个人觉得面试人的主要想法是考察你有啥好算法能尽快对整数接近n倍数 size = (size + n-1) & ~(n-1) Best Regards kelvin yu Crap can work. Given enough thrust pigs will fly, but it's not necessary a good idea. [RFC1925,2.3] -----Original Message----- From: linux_interest_group-bounce@xxxxxxxxxxxxx [mailto:linux_interest_group-bounce@xxxxxxxxxxxxx] On Behalf Of Fiore Zhang Sent: 2010年8月8日 10:46 To: linux_interest_group@xxxxxxxxxxxxx Subject: [linux_interest_group] Re: [linux_interest_group] Re: [linux_interest_group] 一道有趣的题目 主要是free的时候如何不内存泄露,所以关键是分配size + n然后取整的长度,这样的话,能保证在malloc返回的指针前面,留至少一个字节的空,在这里写入malloc返回的指针在实际申请的内存里的偏移,然后free的时候根据指针,往前推一个字节查到偏移,就能知道实际上在内存里申请的内存的头在哪里,然后在那里释放内存,可以保证不泄露。是这样不?细节可以再完善。 在 2010年8月7日 上午8:53,徐学锋 <xuefengxu.hust@xxxxxxxxx> 写道: > malloc/free 要调用系统调用还是直接在内存地址上操作,关键是内存管理算法不是malloc/free,如果就写个malloc/free > 倒是没啥吧 > > 在 2010年8月6日 下午4:26,figo zhang <figo1802@xxxxxxxxx>写道: >> >> 忽悠想起一道N年前去xx >> interview的是被考的一个题目,要求当场在白板上写出来,当时虽然写了,感觉不太好,后来回去的路上在地铁上想出来比较好的方法,日! >> 拿出来给大家分享一下。 >> >> 请用malloc()/free()重新写一对分配函数,要求分配的内存地址以n个字节对齐,比如n是32. >> >> >> 那位想到了,回复一下吧 > >