我有这个结构:
struct sArray {
TCHAR *sName;
};
我现在想为 sArray 数组动态分配内存,并为 sName 动态分配内存。所以我可以使用 var[0].sName、var[1].sName...var[x].sName 之类的东西。
我正在寻找一个简单的解决方案——这里和网上有大量关于动态分配的文章,但没有人回答这个问题。
那么,我该怎么做呢?完成后如何释放成员和数组内存?
// +1 for the NULL terminal byte
TCHAR *names = (TCHAR *)calloc(1, (maxNameLen+1) * NumberOfNames);
struct sArray *array = (struct sArray *)malloc(numberOfArrays);
array[0].sName = names[0];
...
...
free(names);
free(array);
试试这个:
int len = 20; //number of elements (sArray's) you want in ar.
struct sArray *arr = malloc(length*sizeof(struct sArray));
int i;
int nameLength = 30; // max length of name
for (i = 0; i < length; ++i)
arr[i].sName = malloc(nameLength*sizeof(TCHAR));
并释放内存:
for (i = 0; i < length; ++i)
free(arr[i].sName);
free(arr);