【发布时间】:2011-11-21 19:54:08
【问题描述】:
我有一个使用本地数组的函数。我想返回一个指向它的指针,但当然不能这样做,除非手动分配内存。因此我想知道分配是否像这样:
for(i = 0; i < 26; i++)
{
llist[i] = malloc(sizeof(SomeStruct));
}
以后可以像这样释放:
// (where ptr is a pointer to the first allocation in llist)
for(i = 0; i < 26, i++)
{
free(ptr);
ptr += sizeof(SomeStruct);
}
编辑:
看来我做不到。有没有什么方法可以释放所有内存,只给一个指向第一个元素的指针?还是我应该完全采取不同的方法?
【问题讨论】:
-
你不能在循环外做
malloc(sizeof(SomeStruct))*26吗? -
@K-ballo 澄清一下,我是要
malloc(sizeof(SomeStruct)) * 26;还是malloc(sizeof(SomeStruct) * 26);? -
当然应该是
malloc(sizeof(SomeStruct) * 26),我错了。
标签: c memory-management pointers