小编vlu*_*rsk的帖子

需要手动删除QValidator吗?

示例代码:

QDoubleValidator *validator = new QDoubleValidator();
myInputLineEdit->setValidator(validator);

// delete validator;
Run Code Online (Sandbox Code Playgroud)

注意:myInputLineEdit是一个QLineEdit指针,将与其父项一起删除.

我的问题是,我什么时候应该删除验证器,因为它是手动创建的,并且setValidator()根据文档似乎没有取得这个指针的所有权?如果我不删除它,它会是内存泄漏吗?

我试着删除它,就像注释代码一样,我注意到myInputLineEdit的验证器在此之后变为0.所以我想我可能需要删除myInputLineEdit后删除它.

另一个想法是,我可以给验证者一个父母,所以它将与其parrent一起删除,这是一个很好的方法吗?如果没有一个好的候选人成为父母怎么办?

谢谢

c++ qt memory-leaks

5
推荐指数
1
解决办法
1377
查看次数

使用 std::vector::assign() 将向量的一部分分配给自身

假设我有一个大小为 10 的向量(v1)。现在我只想保留部分元素,使用:
v1.assign(v1.begin() + 2, v1.begin() + 6);

我不确定的是,原始元素是否会在赋值之前被销毁。如果它们先被摧毁,那么我就不能依赖原始数据。

页面似乎表明元素首先被删除。然而,快速实验告诉我,数据已正确分配给自身。

那么将向量的一部分分配给自身时会发生什么?

c++ stl vector

4
推荐指数
1
解决办法
1833
查看次数

标签 统计

c++ ×2

memory-leaks ×1

qt ×1

stl ×1

vector ×1