【发布时间】:2023-02-03 16:39:11
【问题描述】:
我有这段代码我不明白为什么我需要删除然后 pop_back() 我可以只做 1 次手术吗?
struct T
{
T(int n):x(n){};
int print() {
return x;
};
private:
int x;
};
int main(int argv,char** argc)
{
std::vector t = { new T(1),new T(2)};
delete t.back();
std::cout << t.size() << std::endl;
std::cout << t.back()->print() << std::endl;
t.pop_back();
std::cout << t.size() << std::endl;
std::cout << t.back()->print() << std::endl;
return 0;
}
删除后你可以看到的输出我看起来像向量仍然持有没有对象的元素
2
179185600
1
1
我的问题是为什么我需要删除然后删除,不能在单个命令中完成相同的操作吗?
【问题讨论】:
-
@ynn 以及谁将释放调用
new的内存?? -
你打算创建一个指针向量吗?
-
你不必须使用
new和delete。谁告诉你那是错的。