說我有一個指針char* ptr
分配的內存和另一個指針char* arr = ptr
狀態,如果內存被釋放
ptr
內存被釋放後會發生什麼arr
。
讓功能是:
char* foo()
{
char* ptr = new char [100];
char* arr = ptr;
delete [] ptr;
return arr;
}
我可以使用這個返回的值?
它會導致任何編譯時/運行時錯誤? 或其他任何東西。如果函數
char* foo()
{
char* ptr = new char [100];
char* arr = ptr;
delete [] arr;
return ptr;
}
我想就沒有從以前的輸出變化,但會有任何變化
還是會發生什麼?
會發生什麼,如果我有一個類
class Pointer
{
public:
char* ptr;
Pointer()
{
ptr= new char [100];
}
~Pointer()
{
delete [] ptr;
}
};
和功能
Pointer foo()
{
Pointer ptr;
ptr.ptr[0]='l';
return ptr;
}
慣於在析構函數結束時調用,並創建一個懸空指針Pointer::ptr
?
「我可以使用這個返回的值嗎?」你可以但它可能不聰明,它可能是一個懸掛指針。也許如果你期待一個空的返回值,只需返回null或null'arr'。 – George
arr指向垃圾。不要歸還它。 – AndyG
我想你問的是錯誤的問題。 'arr'完全沒有任何事情發生。或者'ptr'就是這個問題。 – juanchopanza