回覆列表
-
1 # 王小佳的慧慧
-
2 # 使用者3296806220335
r只存在於fun內、fun函式結束後,r所分配的記憶體也隨之釋放
用動態分配記憶體可解決此問題、如下
#include "stdio.h"
#include
#define N 5
int* fun(int arr[],int n)
{
int i,*r;
r=(int*)malloc(sizeof(int)*5);
for(i=0; i
r只存在於fun內、fun函式結束後,r所分配的記憶體也隨之釋放用動態分配記憶體可解決此問題、如下 #include "stdio.h"#include <stdlib.h>#define N 5int* fun(int arr[],int n){ int i,*r; r=(int*)malloc(sizeof(int)*5);for(i=0; i<n; ++i) r[i]=arr[n-1-i]; return r; }void main(){ int a[N]={8,6,5,4,1},i,*b; for(i=0;i<N;i++) printf("%4d",a[i]); printf("\n"); b=fun(a,N); for(i=0;i<N;i++) printf("%4d",b[i]); free(b);}----------------------------------------------malloc分配的記憶體不隨函式生命週期的結束而釋放使用完所分配的記憶體後記得使用free函式釋放