两个问题:
代码:
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)
谢谢你!
清除数组很容易:
memset(sCN, 0, sizeof(sCN));
Run Code Online (Sandbox Code Playgroud)
至于其余的,您对尝试释放没有 malloc() 的 sCN 以及在仅 calloc() 其中一个名称时尝试释放大量名称感到困惑。