// 使用指针从函数返回一个数组
// paf是一个函数,它返回一个指针,该指针指向一个包含20个int元素的数组
int (*paf())[20]
{
int (*pear)[20];
int i = 0;
pear = (int (*)[20])malloc(20 * sizeof(int));
printf("Malloc memory, Address: ");
PRINT_ADDRESS(pear); // 打印所分配内存的地址
if (!pear)
{
printf("malloc failed!/n");
}
// 初始化数据
for (i = 0; i < 20; i++)
{
(*pear)[i] = i;
}
return pear;
}
如上代码:为何pear返回以后不会失效?????
上述代码中 pear 指向的内存是通过 malloc 从堆中分配的,函数结束后,分配的内存不会被释放。
malloc 分配的内存要用 free 释放。不你说的知道“失效”是不是这个意思。