我有一個自己調用10次的函數。我正在使用QTimer進行重複呼叫。傳遞對象數組組成其他對象作爲函數的參考在C++中?
void DisplayClass::UpdateGuiWithData()
{
//miscellaneous code which is validated
SingletonObjectAsThread::instance()->UpdateFromGuiToExternalHardware(ClassOjbectArray,var1,var2);
QTimer::singleShot(100,this,SLOT(UpdateGuiWithData()));
}
Class A_ComposingClass_B_Object
{
//boolean and enum variables
B ArrayOf_B_Objects[16];
}
Class B
{
//boolean and enum vairables
}
class DisplayClass
{
//variables that are not a concern here
UpdateGuiWithData();
A ArrayOfObject_A[4];
};
Class SingletonAsThread
{
//vairables that are not a concern here
UpdateFromGui(A_ComposingClass_B_Object*,const bool&,const bool&);
};
這裏的交易,當我作爲代碼運行,存在內存大小穩步增加,但是當我註釋掉調用在UpdateGuiWithData類UpdateFromGui通話,內存保持在大約一個恆定水平51 MB。 UpdateFromGui函數沒有動態內存分配或GUI功能。它只是一個平面簡單的函數,它構造了數據包寫入串口,並被稱爲每秒10次,因爲這是硬件的刷新率。
我可以考慮增加內存的唯一原因是每次調用時將對象數組傳遞給UpdateFromGui函數。我認爲每次調用都會創建一個類對象的副本,從而增加內存。然後我試圖使用傳遞的對象數組作爲函數的引用,但找不到適合這樣的函數的聲明,儘管我找到了這樣一個函數的定義和用法。這是我在網上找到的。
//通過引用接收數組。
void GetArray(int (&Array) [10])
{
}
// Test array by reference.
void CRabbitDlgDlg::TestArray()
{
// Pass array by reference.
int Array[10] = { 0 };
GetArray(Array);
}
我的問題是
--->我在想右邊線或者是一些與反覆的呼喚做獨居
類對象?
--->此外,我需要一個拷貝構造函數這裏A類,雖然有在這個類沒有動態
分配或指針變量?
--->還有什麼可以成爲這個內存泄漏的來源(如果不是它不是拷貝構造函數或單電話),它不斷地增加內存使用
應用?
傳遞指向數組的指針數組似乎不太可能導致內存泄漏。我認爲,要麼你根本沒有得到內存泄漏,反而會導致內存使用量增加,或者你正在做其他導致泄漏的事情。無論哪種方式,都需要更多的代碼。 – Goz 2009-08-27 06:06:20