[英]How to free a dynamic allocated array from another function without making that array global?
[英]Dynamic array allocated in another function
我試圖了解動態內存如何在C中工作。假設我需要使用另一個函數為某些指針分配內存。 可能嗎? 我試過下面的程序,但它在Windows中一直崩潰。
void foo(int** x){
*x=(int *)malloc(10*sizeof(int));
int i;
for(i=0; i<10; i++){
*x[i] = 0;
}
}
int main(int argc, char* argv[]){
int *x;
int i;
foo(&x);
for(i=0; i<10; i++){
printf("%d\n",x[i]);
}
return 0;
}
問題出在這條線上。
*x[i] = 0;
在指針取消引用中添加括號。
(*x)[i] = 0;
這是因為x [i]實際上意味着*(x + i)。 也就是說,將i添加到指針x以獲取新指針並獲取該內存位置的值。
現在請記住,x是指向指針的指針。 當你想要*((*x)+i)
時, *x[i]
可以更容易被理解為**(x+i)
*((*x)+i)
。
一旦你掌握了它,可能需要一些思考來解決問題,但指針很容易。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.