在malloc之后,如何获得更多仍然连续的内存?

时间:2010-10-06 16:58:24

标签: c malloc

这是一个面试问题。 如果使用malloc获取一块内存,例如:

char *p = (char *) malloc (100);

现在你发现你需要更多的内存,比如说130.如何获取内存以使新的内存仍然是连续的

2 个答案:

答案 0 :(得分:9)

ptmp = realloc(p, 130);
if (ptmp == NULL)
    handle_out_memory_condition();
p = ptmp;

可替换地:

p = realloc(p, 130);
if (p == NULL)
    abort();

请注意,p可能有一个新值,具体取决于是否需要移动内容以查找新大小的连续块。

文档:http://opengroup.org/onlinepubs/007908775/xsh/realloc.html

答案 1 :(得分:0)

来自所有显而易见的reallocmalloc答案的公寓,如果你使用的是MSVC,你可以使用_expand,它会尝试调整块的大小,没有移动它