1、说明
函数如果是指针或则引用的返回,一般全局变量、局部静态变量、局部动态分配内存的变量可以使用作为函数的返回值,局部变量不行,因为局部变量函数调用完会自动销毁内存,这个时候返回的指针或则引用就有问题了。
2、展示代码
#include <iostream>
#include <string.h>
#include <stdlib.h>
using namespace std;
string& f1(const string &s)
{
static string result = s;
return result;
}
string f2(const string &s)
{
string result = s;
return result;
}
string &f3(const string &s)
{
string *p = new string;
*p = s;
return *p;
}
int *f4()
{
int a = 10;
return &a;
}
int *f5()
{
static int a = 10;
return &a;
}
int *f6()
{
int *a = (int *)malloc(sizeof(int) * 10);
本文总结了C/C++中函数返回指针或引用时可能出现的错误,强调了局部变量作为返回值的问题。由于局部变量在函数调用结束后会被销毁,导致返回的指针或引用无效,可能成为野指针。而使用malloc或new分配的内存位于堆区,在未释放前可作为安全的返回值。
订阅专栏 解锁全文
3982

被折叠的 条评论
为什么被折叠?



