【发布时间】:2011-01-20 08:11:49
【问题描述】:
我正在使用malloc() 在堆上分配一些内存。我正在给指针添加一个偏移量并将其返回给调用函数return ptr+(sizeof(char)*4)),例如,此返回值存储在ptrReturned 中。
最大的问题是,当我free(ptrReturned) 与分配块的开头偏移sizeof(char)*4 时,会释放整个块还是从偏移量到分配的末尾释放内存堵塞?我使用的编译器是MSVC++2008。
如果分配的地址存储在一个链表中,并且有指向前一个项目的指针,那么它应该将整个块从前一个指针为 NULL 的位置释放到下一个指针为 NULL 的位置,对吗?
我已经尝试调试和观察内存,但我无法让它覆盖已释放的块空间。有没有办法可以显式地尝试在定义的地址处分配堆上的空间,并且可能会在尝试分配已分配的内存时出现异常?这样我就可以知道,如果有,当然,没有更简单的答案。
我希望问题很清楚,如果我缺少某些信息,请在 cmets 中告诉我。谢谢。
【问题讨论】:
-
我们不会因为问题是骗子就删除它们。骗子也不是那么糟糕。搜索者有更多机会找到他们想要的东西。
标签: c memory-management malloc heap-memory free