由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 一个关于空间分配的问题
相关主题
C里面一个被分配了内存的指针如何知道分配了多少?为啥用mmap访问文件的效率高呢?
ask for help about AMD cluster数组定义的时候,分配空间了么?
Linux下有办法通过C/C++得到已经调入内存的library的full path么关于isapi
c里面有什么函数可以如何模拟实现thrashing?
有没有这样的memory management library?關於JVM多線程的內存分配
Windows下多个DLL之间memory allocation问题同问一道题,请问如何提高效率
malloc per-thread arena好了。终于把3-way qsort完成标准优化了:)
被ptmalloc坑了gdb debugging the system call execve() ...
相关话题的讨论汇总
话题: 地址话题: 空间话题: 返回话题: 分配话题: 倍数
进入Programming版参与讨论
1 (共1页)
f*l
发帖数: 161
1
我被面试问到的。要求实现一个自己的空间分配,释放函数,使用c的malloc,free。
要求返回地址必须是16的倍数。
我的方法是每次多分配16个字节,这样总有一个是16的倍数。然后返回16倍数的地址。
然后保存一个全局的映射《返回地址,实际地址》。
对方似乎不满意。说为什么要返回16倍数的地址,是因为为了提高效率,每次寻址空间
释放都快。我的方法虽然实现了功能,但是既没有提高效率,又浪费了空间。
我曾想过自己分配一个大空间,然后自己管理,但似乎太过于复杂,而且内存碎片的管
理超出我的能力了。
不知各位有没有好的方法?
X****r
发帖数: 3557
2
这种面试问题首先要明白他想问你什么。要是他就想问你自己怎么实现内存管理,那你
就不要怕麻烦,反正也就是动动嘴皮子而已。
要说你的方法,其实也是不错的,除了其实不需要这个全局的映射之外。
你直接把返回地址和实际地址之间的偏移量存到返回地址前一个字节就行了。
你还可以指出如果是实际的问题的话基本上不用自己实现。
比如glibc里有memalign和posix_memalign

【在 f*l 的大作中提到】
: 我被面试问到的。要求实现一个自己的空间分配,释放函数,使用c的malloc,free。
: 要求返回地址必须是16的倍数。
: 我的方法是每次多分配16个字节,这样总有一个是16的倍数。然后返回16倍数的地址。
: 然后保存一个全局的映射《返回地址,实际地址》。
: 对方似乎不满意。说为什么要返回16倍数的地址,是因为为了提高效率,每次寻址空间
: 释放都快。我的方法虽然实现了功能,但是既没有提高效率,又浪费了空间。
: 我曾想过自己分配一个大空间,然后自己管理,但似乎太过于复杂,而且内存碎片的管
: 理超出我的能力了。
: 不知各位有没有好的方法?

f*l
发帖数: 161
3
谢谢。
也许对方就是考我知不知道那个函数,sign。
这个函数memalign是如何实现的?

【在 X****r 的大作中提到】
: 这种面试问题首先要明白他想问你什么。要是他就想问你自己怎么实现内存管理,那你
: 就不要怕麻烦,反正也就是动动嘴皮子而已。
: 要说你的方法,其实也是不错的,除了其实不需要这个全局的映射之外。
: 你直接把返回地址和实际地址之间的偏移量存到返回地址前一个字节就行了。
: 你还可以指出如果是实际的问题的话基本上不用自己实现。
: 比如glibc里有memalign和posix_memalign

1 (共1页)
进入Programming版参与讨论
相关主题
gdb debugging the system call execve() ...有没有这样的memory management library?
double free or corruption问题Windows下多个DLL之间memory allocation问题
大家在linux下面用什么C++的IDE呢?malloc per-thread arena
C库函数的实现被ptmalloc坑了
C里面一个被分配了内存的指针如何知道分配了多少?为啥用mmap访问文件的效率高呢?
ask for help about AMD cluster数组定义的时候,分配空间了么?
Linux下有办法通过C/C++得到已经调入内存的library的full path么关于isapi
c里面有什么函数可以如何模拟实现thrashing?
相关话题的讨论汇总
话题: 地址话题: 空间话题: 返回话题: 分配话题: 倍数