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 に答える