1. 程式人生 > >C語言之棧區、堆區

C語言之棧區、堆區

空間 bsp 動態 info cat malloc 分享圖片 code clu

一 局部變量存放在棧區中,函數調用結束後釋放內存空間。

#include "stdio.h";
#include "stdlib.h";

int *getNum(){
    int i = 100;
    return &i;
}

void main(){
    int *i = getNum();
    printf("%d\n\r",i); // 內存已釋放,結果不正確
}

技術分享圖片

二 malloc(memory allocate)動態分配的內存在堆區,需要調用free手動釋放。

通過malloc申請的內存,才能用free釋放。局部變量用free釋放,會報錯。

#include "
stdio.h"; #include "stdlib.h"; char *getColor(){ void *str = malloc(4); char *color = (char *)str; *color++ = r; *color++ = e; *color++ = d; *color = \0; // 字符串結束標記 return (char *)str; } void main(){ char *color = getColor(); printf("%s\n\r",color); free
(color); printf("%s\n\r",color); // 內存已釋放,結果不正確 }

技術分享圖片

C語言之棧區、堆區