c++ - 如何尝试读取未分配的内存

标签 c++ memory-management

基本上我想问的是:

char *buffer;
buffer = (char*) malloc (sizeof(char)*bytes);
free(buffer);
//Somehow read buffer if possible,if it failed give return value ,but not crash or stop the whole program
//(examples as Segmentation fault and so on)

是否可以做到这一点?

最佳答案

当然可以!这只是一个糟糕的想法....

您可以释放 buffer,但要为未定义的行为 做好准备,其中包括段错误和其他您不想要的疯狂事情。我有一些建议:

  1. 如果这真的是 c++,你不应该使用 malloc 你应该使用 newdelete 或者更好的 std::stringstd::vector
  2. 您可能以错误的方式解决了这个问题,您不应该尝试读取已经释放的内存,而应该保留您认为有必要读取的内存。
  3. 关于调试,使用调试器,例如 gdb ...

关于c++ - 如何尝试读取未分配的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32275428/

相关文章:

c++ - 如何用 C++ 或 C 创建和编写索引 png 图像

c++ - if/else 在 C++ 的编译时?

c++ - 以下 C++ 代码给出了一些内存分配错误

objective-c - 为什么 Objective-c 运行时不将 dealloc 的对象实例设置为 nil?

C++ 池分配器程序仅在控制台关闭时崩溃

c++ - 拖动 View 时 QGraphicsItem 消失

c++ - 如何在 C++ 中将整数存储到数组中?

c++ - 试图访问一个类的私有(private)成员以解决重载是否是不正确的?

c - (C) 尝试将 .txt 文件读入二维数组(请注意,失败了!)

c++ - HoughLinesP 和 opencv 内存管理