// 使用指針從函數返回一個數組
// 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 釋放。不你說的知道“失效”是不是這個意思。