c++ - 可以从进程核心访问释放的内存段吗?

标签 c++ c linux memory-management memory-leaks

给定地址,之前使用 Malloc 分配的已释放堆内存段是否可以从内核访问?鉴于每个 free() 都不会将内存返回到内核池(因为本地内存管理)。

如果是,如何区分有效(未释放)地址的访问?

基本上,我正在尝试从核心转储一些数据结构。并且想知道,我是否将处理有效的数据结构或先前分配但已释放的数据结构

最佳答案

即使尝试访问以前释放的内存也是未定义的行为

如果它确实被释放,它可能会被您自己的程序重用,因此该地址仍然由它“拥有”。然而,通过释放的指针访问它将不会执行您期望的操作(或者可能会执行,因为未定义的行为)。

所以不,你不能简单地检查指针是否被释放,你需要自己正确地进行内存管理。像RAII这样的技术会帮助你。

关于c++ - 可以从进程核心访问释放的内存段吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28276738/

相关文章:

c++ - 在类中初始化 vector

c++ - LONG_MAX 的 fseek 错误

arrays - Bash:在 FOR 循环中跳出 IF 循环

javascript - 从一个地方在操作系统上安装的所有浏览器中运行 JavaScript 脚本

c++ - 从字符串中解析数字

C++,控制台应用程序,从目录读取文件

c++ - 我可以通过哪些方式从 Windows 工作站在 Linux 中开发 C++ 应用程序?

c - 如何在 C 中删除给定字符串中的溢出字符或附加字符?

c - 如何使用断言来测试字符串

c++ - 从代码中获取像/proc/interrupts 这样的中断计数器?