1. 程式人生 > >記憶體管理malloc 2

記憶體管理malloc 2

malloc可以在函式指標內使用。

#include <stdio.h> #include <stdlib.h> char * get_string() { //char s[] = "welcome"; //(有警告)區域性變數,放在棧上,函式結束自動銷燬 //static char s[] = "welcome"; //靜態儲存區,從分配開始,到程式結束才被回收。 //char *s = "welcome"; //指標,字串常量,不允許修改。 char * s; s = (char *)malloc(10*sizeof(char)); if(s == NULL) { printf("malloc failed\n"); return 0; } printf("input:"); scanf("%s",s); printf("%s\n",s); return s; //要保證返回的地址能被主函式正常接收到 } int main(int argc, const char *argv[]) { char *p; p = get_string(); printf("%s\n",p); free(p); p = NULL; return 0; }

  注意這個地方那就是malloc返回一個p指標。

 p指標=“ssss”; 這個時候相當於將字串的常量指標返回給了P指標了。這時候free釋放的指標就會出現錯誤的。