山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省
题目
这个代码有什么问题?
过程:
从主函数开始进入Test函数,在这个Test函数里面,创建了一个str指针变量,str里面放了一个空指针,然后Getmemory函数去调用,要用的结果放在str里面,然后调用它的时候在函数内部创建了一个局部变量p数组里面放的hello world,然后返回的是p的起始地址,放到了str里面,但是p的那块空间已经还给操作系统了,然后打印的时候就会打印出随机值,这个时候就是非法访问空间了
这个就是返回栈空间地址的问题
总结:
Getmemory函数内部创建的数组是在栈区上创建的,出了函数,p数组的空间就还给了操作系统,返回的地址是没有实际意义的,如果通过返回的地址去访问内存,就是非法访问内存的