日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

内存分配调用

發布時間:2023/11/30 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 内存分配调用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

通過函數給實參分配內存,可以通過二級指針實現

#include<stdio.h> #incldue<stdlib.h>void getheap(int *p) //錯誤的模型 {p = malloc(100); }void getheap(int **p) //正確的模型 {*p = malloc(100); } int main() {int *p =NULL;getheap(&p);free(p);return 0; }

如果出現以下錯誤:

test.c:6:7: warning: incompatible implicit declaration of built-in function ‘malloc’ [enabled by default]

? *p = malloc(100);

是因為沒有加上#include<stdio.h>的頭文件。

?

以下的方法也是可以的

int *getheap() //正確的方法 {return malloc(100); }int main() {int *p =NULL;p = getheap();free(p);return 0; }

?

下面的寫法是錯誤的:

char *getstring() //錯誤的寫法 {char array[10] = “hello”;return array; } int main() {char *s = getstring();printf(“s = %s\n”,s);return 0; }

原因是:

char array[10] = “hello”;? //棧變量,在函數調用結束之后便被釋放掉了

?

下面方法返回結果可行:

#include<stdio.h>char *getstring() {char *p = NULL;p = "string";return p; }int main() {char *p = NULL;p = getstring();printf("p = %s\n",p);return 0; }

?

不涉及到內存分配:

char getstring() //正確的寫法 {char c = ‘a’;return c; } int main() {char c= getstring();printf(“c = %c\n”,c);return 0; }

是正確的。

?

下面的寫法也是可以的

const char *getstring() //正確的 {return “hello”; } int main() {const char *ss = getstring();printf(“ss = %s\n”,ss);return 0; }

常量在靜態區,一直有效,直接返回地址是允許的。

可以將常量的地址返回值返回

或者:

char *getstring() //函數可以正確返回 {static char array[10] = “hello”; //在靜態區域return array; } int main() {char *s = getstring(); }

?

轉載于:https://www.cnblogs.com/wanghao-boke/p/11171772.html

總結

以上是生活随笔為你收集整理的内存分配调用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。