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

时间:2015-08-28 16:11:49

标签: 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)

是否有可能做到这一点?

1 个答案:

答案 0 :(得分:3)

你当然可以!它只是一个可怕的想法......

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

  1. 如果这确实是c ++,那么您不应该使用malloc newdelete或更好std::stringstd::vector
  2. 您可能会以错误的方式解决此问题,您不应该尝试读取已经释放的内存,而应保留您认为必须阅读的内存。
  3. 关于调试,请使用调试器,如gdb ...