在設計動態分配內存的類時,遇到了有關內存分配的以下問題。我希望你們中的一些人能夠以正確的方向指出我應該如何更好地設計我的班級。我的類動態分配內存,因此也在其析構函數中刪除它。本地變量在超出範圍時刪除另一個變量的內存
爲了說明問題,請考慮以下傻類聲明:
class testClass{
int* data;
public:
testClass(){
data = new int;
*data = 5;
}
~testClass(){
delete data;
}
};
到目前爲止好。現在假設我主要創建這些對象中的一個
int main(){
testClass myObject;
return 0;
}
當然還沒有問題。但是,假設我現在編寫一個函數,它將一個testClass對象作爲輸入並從main中調用它。
void doNoting(testClass copyOfMyObject){
//do nothing
}
int main(){
testClass myObject;
doNothing(myObject);
return 0;
}
這次,該函數創建一個局部變量copyOfMyObject,它只是myObject的一個副本。然後當該函數結束時,該本地對象自動具有調用它的析構函數,該函數將刪除其數據指針所指向的內存。但是,由於這與myObject的數據指針指向的內存相同,因此myObject在進程中無意中刪除了其內存。我的問題是:什麼是設計我的課程的更好方法?
http:// stackoverflow。com/questions/4172722/what-the-the-rule-of-3 – 2013-03-05 18:38:27