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 返回不应该释放实参即栈空间的地址吗
因为你正在用它的返回值啊,
只要外部还保留它的强引用,它就不可能会自动销毁,除非你手动写销毁的代码
变量确实销毁了,但是内存中的值没有销毁,而是通过返回一个指针指向这块内存