0x4*_*16e 0 c++ oop pointers memory-management
我整天都在寻找这个.所以,C++如果你有这个代码:
#include <iostream>
struct a {
int x, y;
a (int aa = 0, int bb = 0) : x{aa}, y{bb} {
}
};
void printit (a*);
int main (void) {
printit (new a {1,3});
return 0;
}
void printit (a *aa) {
std::cout << aa->x << " - " << aa->y;
}
Run Code Online (Sandbox Code Playgroud)
如果给我printit ()函数(意味着我无法访问printit()代码)并且printit()不删除对象,有没有办法可以删除我创建的对象?
printit (new a {1,3}); // <--- this object
Run Code Online (Sandbox Code Playgroud)
为了澄清,我的问题是如何在没有附加变量的情况下执行上述操作,并确保已创建的对象已被删除.
你可以从智能指针中寻求帮助.例如
printIt(std::make_unique<a>(1,3).get());
Run Code Online (Sandbox Code Playgroud)
要么
printIt(std::unique_ptr<a>(new a{1,3}).get());
Run Code Online (Sandbox Code Playgroud)
否则,您必须将指针保存在命名变量中,delete稍后再将其保存.