黑胡子Z 2022-02-17 10:15 采纳率: 0%
浏览 33

c的存储空间的问题.

问题遇到的现象和发生背景

c的存储空间的问题

问题相关代码,请勿粘贴截图

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *testMemory(char *bb);

int main() {

char a[10] = "sdsdsa";

printf("main a :%p\n",a);

printf("%s", testMemory(a));

}

char * testMemory(char *bb) {

printf("testMemory bb:%p\n",bb);

char *a = bb;

return a;

}

运行结果及报错内容

$ ./mains
sdsdsa%

我的疑问

testMemory 返回后 为什么不会把栈区内存a 销毁.

通过Testmemory 传进来的实参 是main分配在栈空间的内存地址, testmemory 返回不应该释放实参即栈空间的地址吗

我想要达到的结果
  • 写回答

2条回答 默认 最新

  • 於黾 2022-02-17 10:41
    关注

    因为你正在用它的返回值啊,
    只要外部还保留它的强引用,它就不可能会自动销毁,除非你手动写销毁的代码

    评论

报告相同问题?

问题事件

  • 修改了问题 2月17日
  • 创建了问题 2月17日

悬赏问题

  • ¥15 Oracle触发器记录修改前后的字段值
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器