考虑一个返回 a 的函数,Type*
因此它看起来可以Type
在其定义中分配 a ,但您无法确定(有很多函数,您没有时间阅读它们的定义)。
你怎么知道你是否应该删除返回的指针?例如,这是类型:
struct MyStruct
{
MyStruct(void) { cout << "Created.\n"; }
~MyStruct(void) { cout << "Deleted.\n"; }
};
这是功能:
MyStruct* Func1(void)
{
return (new MyStruct());
}
Func1 分配了一个指针,您应该稍后取消分配它。但也许定义是别的东西,指针不应该是delete
d。
我的问题是:你怎么知道是否删除指针?例如:也许指针是静态的?
MyStruct* Func2(void)
{
static MyStruct* ms = &MyStruct();
return ms;
}
取消分配这个指针会使整个程序崩溃。
提前致谢。