我想malloc一些內存,對該內存運行一些操作,然後這些操作的結果是持久的。一個例子可能是如果我有一個2-d持久數組,我想要進行逐行更新。如何複製C中的指針?
void update(int **persistent, int row, int rowSize)
{
int *temp = (int*) malloc(sizeof(int) * rowSize);
//...do stuff with temp
persistent[row] = temp
}
什麼是最安全的方式來做到這一點在C,而不必深複製臨時持久化[行]的內容?如果我按照上面輸入的方式執行而沒有釋放temp,是否會導致內存泄漏,即使我稍後再正確釋放持久性內存?
編輯:我有一個相關的問題是:如果我試圖釋放(臨時)在函數的末尾,我注意到,即使持久[行]維持在臨時數據的引用,內存被釋放。這是因爲malloc/free的設計方式,所以每當一個指針被釋放時就釋放內存而不檢查對該內存的其他活動引用?
你爲什麼不隨意改變持久性[行]? – 2011-12-29 04:44:17
@Leafy當它進入函數時,在持久[行]中已經有數據,我需要將該初始數據和持久[行]的變種版本組合以形成最終的持久[行] – Jeff 2011-12-29 04:47:56