C語言之棧區、堆區
阿新 • • 發佈:2018-04-16
空間 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語言之棧區、堆區