【发布时间】:2011-10-14 19:25:45
【问题描述】:
char *t = malloc(2);
t = "as";
t = realloc(t,sizeof(char)*6);
我收到错误“无效指针:0x080488d4 *”..
我在使用内存分配函数时遇到奇怪的错误。是否有任何好的 tuts/guides 可以解释我的内存分配功能。 我正在使用 linux..
请帮忙..
【问题讨论】:
-
sizeof(char) 定义为 1。这是您始终可以信赖的少数几件事之一。无需乘以它。
-
我愿意声明使用 realloc() 可能是一个错误...
-
@MichaelDorgan,这是一个非常大胆的声明。在很多情况下 realloc 就可以了。
-
我打算这样做。我见过的每一个使用 realloc 的地方都是一个巨大的黑客,可以正确地让你的缓冲区大小开始。是的,有些地方你不会知道你的大小,但通常我会在 for 循环中看到 realloc 或同样蹩脚的东西。此外,在嵌入式领域,realloc 在创建内存碎片方面确实很糟糕。