2015-08-28 17 views
0

基本上我想問的是:如何嘗試讀取未分配的內存

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

請問* *爲什麼要這麼做? – Borgleader

+0

@Borgleader因爲我在製作一個水平加載器。並使用緩衝區作爲級別。 – nik123

+1

但是,爲什麼*明確*你想讀取未分配的緩衝區? –

回答

3

你當然可以!它只是一個TERRIBLE想法....

可以解除分配buffer,但是對於未定義行爲其中包括賽格故障和你不希望其他瘋狂的事情來準備。我有一些建議:

  1. 如果這是真的C++,你不應該使用malloc你應該使用newdelete或更好,但std::stringstd::vector
  2. 你可能會以錯誤的方式來解決這個問題,你不應該試圖讀取已經釋放的內存,而應該保留你認爲需要讀取的內存。
  3. 在問候調試,使用調試器,如gdb ...
相關問題