关于C++自由分配内存的问题

来源:百度知道 编辑:UC知道 时间:2024/06/28 14:42:15
局部作用域中用new分配的内存区域,是否可以通过全局作用域中的指针访问到
即如下形式(伪代码)

struct Pmem *p;
{
p=new Pmem;
}

OutPut(p);

以上代码是否会出错

可以的,但是在申明时一定要初始化为NULL,访问时判断指针是否为NULL,因为你访问指针时不知道是否已经分配内存了,如果没有分配,访问就会出错
另外,还要记得在某个地方释放内存,否则会内存泄漏,如果程序一直运行,就会耗尽内存,导致程序崩溃
代码修改如下:
struct Pmem *p = NULL;
{
p=new Pmem;
}

if(NULL != p)
{
OutPut(p);
}

可以,就算在new申请的内存空间有有动态储存区中的,他的生命周期和域无关,只能由delete删除,所以没有问题