一 局部变量存放在栈区中,函数调用结束后释放内存空间。
#include "stdio.h"; #include "stdlib.h"; int *getNum(){ int i = 100; return &i; } void main(){ int *i = getNum(); printf("%d ",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 = '