今天写代码时遇到了一个关于 内存,函数调用和返回值相关的问题,很基础 但是做错了
找到了一篇对此有用的文章 记录一下,方便以后查阅:
#include<iostream>
using namespace std;
char* test(void)
{
char str[] = "hello world!";
return str;
}
int main(void)
{
char* p;
p = test();//当我用一个指针接收一个函数return的指针时 虽然指针str的地址被赋值给了指针p ,
//但是指针所指向的内容没有被拷贝 所以当函数结束时 ,
// 指针所指向的局部变量会被释放,导致指针p的所指向的空间内容为乱码。
cout << p << endl;
return 0;
(自认为想通了)
还有关于函数调用约定的内容:
【精选】函数调用的几种方式:__cdecl、__stdcall、__fastcall、__thiscall、__clrcall、__vectorcall_小胖七少爷的博客-CSDN博客
(一定要记得看!!!)