返回局部变量是一个指向常量的字符串指针
返回局部变量地址#
char* GetMemory(void)
{
char p[] = "hello world";
return p;
}
int main()
{
char* str = NULL;
str = GetMemory();
printf(str);
return 0;
}
GetMemory函数首先将"hello world"字符串(一般在.rdata区段存放)复制到栈上,然后返回对应的栈地址。当GetMemory返回后栈内存依旧可以正确访问,但是当调用printf函数时其会使用GetMemory使用过的栈,所以对应栈中的内存就会被覆盖,printf无法打印出hello world。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】