我有一个 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}};