gpt4 book ai didi

c - 当指针未知时,如何释放 C 中的内存?

转载 作者:太空宇宙 更新时间:2023-11-04 05:03:28 24 4
gpt4 key购买 nike

我希望释放我没有指向的内存块。在我的程序中,我依次调用了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() 正在做什么,您的程序也会依赖于未定义的行为。当 C 库的新版本到来时,行为可能会改变,如果您使用不同的工具链(从 GNU C 切换到 Microsoft C 或其他工具)编译您的程序,您的程序几乎肯定会失败。

任何时候分配内存,都需要跟踪指针。如果您的程序甚至不知道内存,就没有办法释放它。

跟踪您的内存分配。如果您正在设计要动态分配的数据结构,您的设计应该包括跟踪它们的功能,例如在链接列表中保留地址列表或其他内容。

如果这看起来工作量很大,可以考虑使用托管语言,如 C# 或 Java 或 Python 或其他语言。

关于c - 当指针未知时,如何释放 C 中的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25812478/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com