如何清除 C 中的结构数组,然后释放该内存?

Jef*_*ffR 1 c struct

两个问题:

  1. 如何快速清除结构体数组?
  2. 如何释放结构体成员分配的内存?

代码:

struct sComputerNames
{
    TCHAR *sName;   // Using a pointer here to minimize stack memory.   
};

TCHAR *sComputer  = (TCHAR *) calloc(2048+1, sizeof(TCHAR));
struct sComputerNames sCN[4096] = {0};


_tcscpy(sComputer,L"PC1");
sCN[0].sName = (TCHAR *) calloc(128,sizeof(TCHAR));
_tcscpy_s(sCN[0].sName,128,sComputer);


// What is a better way to clear out the structure array?
for (DWORD i=0;i<4096;i++)
{
    free(sCN[i].sName);
    sCN[i].sName=NULL;
}


// Assign a new value
_tcscpy(sComputer,L"PC2");
sCN[0].sName = (TCHAR *) calloc(128,sizeof(TCHAR));
_tcscpy_s(sCN[0].sName,128,sComputer);


free(sCN);sCN=NULL;     // Erroring here - how to free memory allocated by sCN's members?
free(sComputer);sComputer=NULL;
Run Code Online (Sandbox Code Playgroud)

谢谢你!

blu*_*ift 5

清除数组很容易:

memset(sCN, 0, sizeof(sCN));
Run Code Online (Sandbox Code Playgroud)

至于其余的,您对尝试释放没有 malloc() 的 sCN 以及在仅 calloc() 其中一个名称时尝试释放大量名称感到困惑。