我有一個C++代碼...轉換分配/重新分配從C++多維數組到C
// global
DWORD* P;
DWORD (*S)[256];
// then later allocate memory
P = new DWORD[18];
S = new DWORD[4][256];
// later on, free memory
delete P;
delete [] S;
,我要轉換爲C.我試過..
/* global */
DWORD* P;
DWORD (*S)[256];
/* allocate */
P = malloc(sizeof(DWORD[18]));
S = malloc(sizeof(DWORD[4][256]));
/* free */
free(P);
free(S);
它的工作原理和我沒有從編譯器(GCC)得到任何錯誤或警告,但我不確定這是否正確,並且我猜測它泄漏了內存,可能是釋放了多維數組。
此外,那些數組太大而無法在堆棧上分配?我可以這樣做而不用忘記malloc/free嗎?
DWORD P[18] = {0};
DWORD S[4][256] = {{0}};
'刪除P'是錯誤的,應該是'delete [] P''。 – interjay
除了已經提到的錯誤'delete',我沒有看到你正在做什麼的問題,儘管我寧願寫'S = malloc(4 * sizeof(DWORD [256]));'。 – jxh
@interjay謝謝。 @jxh所以'免費(S);'正確地釋放它? – user2896182