0

我有这个结构:

struct sArray {
TCHAR *sName;
};

我现在想为 sArray 数组动态分配内存,并为 sName 动态分配内存。所以我可以使用 var[0].sName、var[1].sName...var[x].sName 之类的东西。

我正在寻找一个简单的解决方案——这里和网上有大量关于动态分配的文章,但没有人回答这个问题。

那么,我该怎么做呢?完成后如何释放成员和数组内存?

4

2 回答 2

0
// +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);
于 2013-03-27T18:49:38.900 回答
0

试试这个:

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);
于 2013-03-27T18:49:54.940 回答