一个C结构中的一个TCHAR成员 - 如何动态分配struct的成员和数组?

时间:2013-03-27 18:42:04

标签: c struct

我有这个结构:

struct sArray {
TCHAR *sName;
};

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

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

那么,我该怎么做?如何在完成它们时释放成员和数组内存?

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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);