两个问题:
如何快速清除结构数组?
如何释放结构成员分配的内存?
代码:

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;

谢谢您!

最佳答案

清除阵列很容易:

memset(sCN, 0, sizeof(sCN));

至于其他的,你有一些困惑,试图释放你没有malloc()的sCN,当你只调用其中一个时,试图释放很多名字。

关于c - 如何清除C语言中的结构数组,然后释放该内存?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9804136/

10-10 07:14