new-operator相关内容

在Qt中使用';new';声明变量而不使用Delete

从this post中,我可以得出结论,在Qt: 中声明新小部件有两种主要方式(当然还有其他方式) 未使用new关键字: QLabel lb; lb.setText("a"); 使用new关键字: QLabel *lb = new QLabel; lb->setText("a"); 因此,在我的一些教程中,我看到讲师使用了第二种方法,之后没有使用delete。根据我从很多文 ..

如何将对象添加到指针

我想弄清楚一个向量如何在它已经创建&q;一些对象之后添加更多的对象: int *ptr; ptr = new int; 在使用该指针之后,如何向该指针添加更多对象?(使其成为数组)。谢谢! 推荐答案 大多数实现都是从一个小数组开始的,每当它达到容量时,就会分配一个大小加倍的新数组,并将旧元素复制到新数组中。 ..
发布时间:2022-06-11 22:32:09 C/C++开发

将堆上的3D数组存储为结构成员

我最近开始使用C++进行数值计算,我希望在模拟过程中使用Struct Operators来存储3D字段。 我用 在堆上创建了3D数组 const unsigned int RES = 256; auto arr3D = new double [RES][RES][RES]; 因为根据我的测试,这种方法比使用Boost_Multiarr、Eigen张量或嵌套向量都要快。 到目前为止,这在我的 ..

当使用new关键字进行分配时,当内存不足时,CLR是否会通过睡眠语句进行限制?

我在堆栈溢出上遇到this answer此处: 当您分配的速度快于垃圾收集速度时,您将遇到OOM。如果您执行大量分配,CLR将插入睡眠(Xx)来限制分配,但在极端情况下这是不够的。 所以,我还没有读到任何关于CLR通过在内存不足时插入一条睡眠语句来减慢分配速度来限制分配的内容。有谁能证实这是真的还是假的?如果这是真的,那么有什么文件谈到了细节吗?我试过在谷歌上搜索,但找不到任何支持这一 ..
发布时间:2022-06-11 22:21:21 C#/.NET

在C++中是否兼容Malloc/Free和new/Delete?

很好地比较了Malloc/Free和new/Deletehere,并很好地解释了Malloc()和Free()是如何工作的here。显然,我们不应该将它们混为一谈--使用Free和new,或使用DELETE和Malloc。 我们可以看到很多开源项目,有许多贡献者,同时使用这两种机制,同时尊重上面的“不混合”规则。通常,在一个文件中只有一种方式(一个作者,一个偏好)。我已经分叉了这样一个项目, ..
发布时间:2022-06-11 22:09:48 C/C++开发

重新分配指针时删除运算符的用法

在将指针重新分配给另一个指针时,是否需要始终删除该指针, 示例: int value = 5; int* ptr{ new int{} }; // allocate memory ptr = &value; // old address lost, memory leak results 我知道这有助于防止内存泄漏,但这在所有情况下都是可取的吗?有没有这样一种情况:在ptr=&;值 ..
发布时间:2022-06-11 21:57:07 C/C++开发

C++,新VS Malloc返回值

当我学习C99时,我被告知要始终检查malloc的返回值,以查看它是成功还是失败,但现在我开始学习C++,他们告诉我new不需要这样做,您可以假设它对您总是有效的。 但为什么会这样? 推荐答案 new仍然可能失败并引发std::bad_alloc异常,您的程序需要可能会检查它是否这样做了,或者只是让异常向上传播。您还可以向new传递一个标志,使其行为类似于malloc,并在出错时 ..
发布时间:2022-06-11 21:52:25 C/C++开发

何时使用新建和删除

我正在重读一段时间以前关于C++的代码(我现在正在学校学习Java),我有点困惑什么时候必须使用delete。 例如: 声明两个对象时: Fraction* f1; Fraction* f2; 和创建f1和f2如下: f1 = new Fraction(user_input1, user_input2); f2 = new Fraction(user_input3, user ..
发布时间:2022-06-11 21:42:56 C/C++开发

C++什么是指针=新类型&Q;,而不是&Q;指针=新类型[]?

在许多教程中,关于动态内存的第一个代码样例是这样开始的: int * pointer; pointer = new int; // version 1 //OR pointer = new int [20]; // version 2 他们总是继续解释第二个版本的工作原理,但完全避免谈论第一个版本。 我想知道的是,pointer = new int创建了什么?我能用 ..
发布时间:2022-05-23 13:49:19 C/C++开发

将参数传递给模板类型的 C# 泛型 new()

添加到列表时,我正在尝试通过其构造函数创建一个 T 类型的新对象. 我收到一个编译错误:错误消息是: 'T': 创建变量实例时无法提供参数 但是我的类确实有一个构造函数参数!我怎样才能做到这一点? 公共静态字符串 GetAllItems(...) where T : new(){...列出tabListItems = 新列表();foreach(listCollec ..
发布时间:2022-01-31 16:09:34 C#/.NET

为什么使用“新"会导致内存泄漏?

我先学了 C#,现在我开始学习 C++.据我了解,C++ 中的运算符 new 与 C# 中的运算符不同. 你能解释一下这个示例代码中内存泄漏的原因吗? A 类 { ... };结构 B { ... };A *object1 = new A();B 对象2 = *(新 B()); 解决方案 发生了什么 当您编写 T t; 时,您正在创建具有 自动存储持续时间 的 T 类型的对象.超 ..
发布时间:2022-01-30 16:47:56 C/C++开发

为什么 C++ 程序员应该尽量减少“新"的使用?

我偶然发现 Stack Overflow 问题 使用 std::list 时 std::string 的内存泄漏,其中一条评论这样说: 停止使用 new 这么多.我看不出你在任何地方使用 new 的任何原因你做到了.您可以在 C++ 中按值创建对象,它是其中之一使用该语言的巨大优势. 您不必分配一切都在堆上. 不要像 Java 程序员那样思考. 我不太确定 ..
发布时间:2022-01-30 15:52:35 C/C++开发

新建和覆盖之间的区别

想知道以下之间有什么区别: 案例 1:基类 public void DoIt(); 案例一:继承类 public new void DoIt(); 案例 2:基类 public virtual void DoIt(); 案例2:继承类 public override void DoIt(); 根据我运行的测试,案例 1 和 2 似乎具有相同的效果.有区别,还是首选方式? ..
发布时间:2022-01-30 10:36:43 C#/.NET