正常情况下,我们在定义函数的时候,是不要返回局部变量的地址的,因为栈区数据在函数执行完后就会被释放。
实验:
1.单纯调用返回局部变量地址的函数,并打印返回值:
此时仍可以得到返回值,也就是说栈区的数据在函数执行完后并没有被释放。
但是,当我们在调用函数之间穿插调用字符串型局部变量或者局部变量的地址,栈区的数据就被释放了。
由此可见,在使用VS2022时,只要不是穿插调用字符串型的局部变量或者调用其他局部变量的地址,哪怕函数返回值是局部变量的地址,栈区的数据仍被编译器一直保留,不会被释放!(其他编译器,仍需避免函数返回局部变量的地址)
希望对大家有所帮助!