c++指针传递问题求解,急~~

来源:百度知道 编辑:UC知道 时间:2024/09/24 19:23:31
c++如何将函数内部指针对象(new分配)传递给外部?
内部指针会在函数体结束的时候被释放掉,它所指向的数据是否也被释放掉?
希望前辈给予详细的解释,最好附上代码,谢谢!!

1你可以通过返回值的方法来把指针传给外部,可以参考如下代码:
#include<iostream.h>
int* f(void){
int* p=new int;
cout<<p<<endl;
return p;
}
void main()
{
int *q=f();
cout<<q;
}
运行后可以看到,p被传递给了全局指针q
你可以参考如下代码测试内部指针的释放:
#include<iostream.h>

void f(void){
int* p=new int;
cout<<p<<endl;

}
void main()
{
cout<<p;
}
会有一个出错信息,指出找不到p,是因为p不在全局域内,而new的指针只能被delete,但你没有把它delete掉,而被悬空了所以会造成风险。所以,你一定要在new的域内显示的delete掉new的对象。

new分配的空间只有用delete才会释放。
#include<iostream>
#include<cstring>
using namespace std;
char *getmem(int size)
{
char *p=new char[size];
return p;
}
int main() {
char *p=getmem(5);
strncpy(p,"huai",5);
cout <<p;
delete p;
p = 0;
return 0;

}

例题~~~~