【发布时间】:2014-11-06 21:07:26
【问题描述】:
我希望释放我没有指针的内存块。在我的程序中,我依次调用malloc,希望malloc(1)、malloc(4)、malloc(5)创建的内存是连续的。然后,当我只有指向malloc(5) 的指针时,我会释放这些内存。但我想不出这是怎么做到的;我不能简单地创建一个引用 ptr[-5] 地址的指针,然后释放 5 个字节的内存吗?如何才能做到这一点?
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
int main(){
malloc(1);
malloc(4);
char* ptr = malloc(5);
free(ptr);
}
【问题讨论】:
-
你为什么要像这样在野外 malloc?
-
为什么?只是为什么?如果您想要连续的内存,请通过一次调用
malloc来分配它并进行一些指针运算。这只会引发未定义的行为。 -
希望内存分配是连续的似乎相当乐观:)
-
看来您可能想要一些非常有趣的东西,但没有提供更高级别的细节。更高层次的目标是什么?形成具有更高级别目标和详细信息的帖子可能会满足您的需求。
-
看来您需要在 C 标准提供的基础上实现自己的内存管理。
标签: c pointers memory memory-management