函数返回值失效
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#if 1
char* getMen2() {char buf[64]; //臨時(shí)變量,棧區(qū)存放strcpy(buf, "abccddeeff");printf("buf:%s\n", buf);return buf; //此處并不是把內(nèi)存塊64個(gè)字節(jié)return,而是把內(nèi)存塊的首地址返回給tmp
}
char* getMen1(num) {char* p;p = (char *)malloc(sizeof(char)*num); //全局變量,程序結(jié)束時(shí),操作系統(tǒng)釋放內(nèi)存strcpy(p, "abccddeeff");return p;
}
void main()
{char* tmp = NULL;tmp = getMen2();printf("tmp:%s\n", tmp); //空間已經(jīng)被釋放。輸出亂碼char* tmp1 = NULL;tmp1 = getMen1(10);printf("tmp1:%s\n", tmp1);
}
#endif
總結(jié)
- 上一篇: java基础代码实例_基础篇:详解JAV
- 下一篇: linux之trap命令