c++ - 如何通过程序扫描系统内存?

标签 c++ c

我只想读取系统内存,而不是为其他进程分配的内存,只是释放内存。 我尝试使用 malloc 分配大量内存:

char *ptr;
ptr = (char*)malloc((1024*1024*700)*sizeof(char));

我尝试打印它,但它打印的是空字符(即什么都没有)。

printf("%c",ptr[i]);

所以我将它的类型转换为int,认为它可能会打印它的ascii。

printf("",(int)ptr[i]);

所有打印出来的值都是0。

malloc 不会初始化分配的内存,对吗? 我无法打印内存。

我在 linux、fedora 14、最新的 gcc 和带有 dev-c++ 的 windows xp 上试过

我只想访问内存。是否可以通过 linux 中的某些内核 pgm 使用地址并从中获取日期?你能推荐一些读取 ram 的工具吗?

最佳答案

malloc() 本身确实不会初始化内存,但操作系统确实通常会在请求更多时清理它交给您的进程的内存。这是一项安全措施。

如果您希望直接读取物理内存,您可以通过打开 /dev/mem 并使用 mmap() 映射感兴趣的部分来实现。 /dev/mem 的权限通常限制对 root 的访问。

关于c++ - 如何通过程序扫描系统内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4151671/

相关文章:

c - 如何在保留旧内容的同时将动态数组的大小加倍

c - "#include"C 程序中作为 char[] 的文本文件

c - 从正则表达式到 NFA 再到 DFA

C++ Boost::asio::io_service 如何在程序完成时安全销毁 io_service 资源

c++ - 将 constexpr 与 getenv (或替代方案)一起使用

c++ - 使用迭代器位置的线性和二进制搜索

c++ - 为第一个元素对数组进行排序的算法,然后是前 2 个元素,然后是前 3 个元素,依此类推

c# - C++ DLL 在运行时抛出异常

c - 定期通过C中的套接字发送数据

c - pthread_create int 而不是 void