new-operator相关内容

C++ 的新操作是否有任何保证地址返回对齐的保证?

大多数有经验的程序员都知道数据对齐对于程序的性能很重要.我见过一些程序员编写的程序分配比他们需要的更大的缓冲区大小,并使用对齐的指针作为开始.我想知道我是否应该在我的程序中这样做,我不知道是否有任何保证 C++ 的新操作返回的地址对齐.所以我写了一个小程序来测试 for(size_t i = 0; i (p) % 4) {cout ..
发布时间:2021-11-27 08:04:18 C/C++开发

是否可以在 C++ 中动态创建恒定大小的数组?

首先,我想向大家保证,我问这个问题是出于好奇.我的意思是,不要告诉我如果我需要这个,那么我的设计就有问题,因为我在实际代码中不需要这个.希望我说服了你 :) 现在问题来了: 对于大多数类型 T 我们可以写 T* p = 新 T; 现在如果 T 是数组类型呢? int (*p)[3] = new ???;//指向 3 数组的指针 = new ??? 我试过了: typedef int ..
发布时间:2021-11-18 03:39:00 C/C++开发

如何在 C++ 中动态分配数组

我知道如何在 C 中为数组动态分配空间.可以按如下方式完成: L = (int*)malloc(mid*sizeof(int)); 并且可以通过以下方式释放内存: free(L); 我如何在 C++ 中实现等价的? 具体来说,我如何使用 new 和 delete[] 关键字?特别是在创建/销毁链表节点,或在编译时创建和销毁其大小由变量给定的数组的上下文中? 解决方案 int* ..
发布时间:2021-11-18 03:28:24 C/C++开发

在 Java 中不使用“new"关键字声明数组

以下两个声明有什么区别吗? int arr[] = new int [5]; 和 int arr1[] = {1,2,3,4,5}; arr1 是声明在栈上还是堆上? 解决方案 有一个明显的区别,一个全零,另一个包含 [1..5]. 但这是唯一的区别.两者都是 5 个元素的 int 数组,它们的分配方式相同.用大括号声明只是语法上的方便,没有 new. 注意这种形式只能 ..
发布时间:2021-11-18 03:27:28 Java开发

int *array = new int[n];这个功能实际上在做什么?

我对如何创建动态定义的数组感到困惑: int *array = new int[n]; 我不知道这是在做什么.我可以说它正在创建一个名为 array 的指针,该指针指向一个新的对象/数组 int?有人愿意解释吗? 解决方案 new 分配存储您请求的对象/数组所需的内存量.在这种情况下,n 个整数. 然后指针会将地址存储到这块内存中. 但是要小心,这个分配的内存块不会被释放 ..
发布时间:2021-11-18 02:41:38 C/C++开发

new[] 在 C++ 中调用默认构造函数吗?

当我使用 new[] 创建我的类的数组时: int count = 10;A *arr = 新 A[count]; 我看到它调用了 A count 次的默认构造函数.结果 arr 有 count 个初始化 A 类型的对象.但是如果我用同样的东西来构造一个 int 数组: int *arr2 = new int[count]; 它没有被初始化.所有值都类似于 -842150451 尽管 in ..
发布时间:2021-11-18 02:25:05 C/C++开发

delete[] 对象数组

我已经分配了对象数组 Objects *array = new Objects[N]; 我应该如何删除这个数组?只是 delete[] 数组; 还是迭代数组的元素? for(int i=0;i 谢谢 更新: 我将循环体更改为 删除 &array[i]; 强制编译代码. 解决方案 new 的每次使用都应该通过 delete 来平衡,并且每次使用 new[] 应该通 ..
发布时间:2021-11-18 02:15:02 C/C++开发

在 JavaScript 中使用 {} 或 new Object() 创建一个空对象?

在 JavaScript 中有两种不同的方法来创建空对象: var objectA = {}var objectB = new Object() 脚本引擎处理它们的方式有什么不同吗?是否有任何理由使用一个而不是另一个? 同样,也可以使用不同的语法创建一个空数组: var arrayA = []var arrayB = new Array() 解决方案 对象 使用 new Ob ..

delete[] 如何知道它是一个数组?

好吧,我想我们都同意以下代码发生的事情是未定义的,取决于传递的内容, void deleteForMe(int* 指针){删除[]指针;} 指针可以是各种不同的东西,因此对其执行无条件的 delete[] 是未定义的.然而,让我们假设我们确实传递了一个数组指针, int main(){int* arr = new int[5];deleteForMe(arr);返回0;} 我的问题是,在这 ..
发布时间:2021-11-18 01:20:03 C/C++开发

Arduino 的新操作员

有人告诉我(特别是在 一个对 Arduino 上的 C++ 标准库 和堆栈溢出问题的回答 C++ 字符串和 Arduino 字符串.如何组合它们?)) Arduino 编译器没有实现 new操作员.但是,我已经为使用它的 Arduino(在 Arduino IDE 中)编写了一个程序,并且运行良好. void setup() {Serial.begin(9600);}无效循环(){字符*数组;字 ..
发布时间:2021-11-17 04:10:41 C/C++开发

Arduino 的新操作员

有人告诉我(特别是在 一个对 Arduino 上的 C++ 标准库 和堆栈溢出问题的回答 C++ 字符串和 Arduino 字符串.如何组合它们?)) Arduino 编译器没有实现 new操作员.但是,我已经为使用它的 Arduino(在 Arduino IDE 中)编写了一个程序,并且运行良好. void setup() {Serial.begin(9600);}无效循环(){字符*数组;字 ..
发布时间:2021-11-17 03:38:47 C/C++开发

为什么要使用“new"隐藏方法?

可能的重复: C# - 方法签名中的新关键字 假设我有 3 个班级:爷爷、爸爸、儿子.儿子继承爸爸,爸爸继承爷爷. 每个类都实现了 foo. //爷爷类:公共虚拟无效 foo()//爸爸类:新的公共虚拟无效 foo()//子类:公共覆盖无效 foo() 我不明白为什么爸爸会使用 new 关键字.据我了解,使用 new 隐藏了一个方法.为什么要这样做? 我阅读了 MSDN 对 ..
发布时间:2021-11-17 02:32:55 C#/.NET

Scala:伴随对象和“新"对象关键词

在我最近关于在 Scala 中使用或省略“new"关键字的帖子中(“new"关键字在 Scala 中)有人告诉我,这个遗漏来自这样一个事实,即某些类具有用 apply 方法定义的伴生对象.我的问题是:我们是否能够分辨出或是否有任何通用规则来区分哪些类/对象具有伴随对象和应用方法? 提前致谢,很抱歉这是一个愚蠢的问题,但来自 Java 背景,这有点令人困惑. 解决方案 在 Scala ..
发布时间:2021-11-16 23:11:18 其他开发

如何在 JavaScript 中使用参数值数组构造对象,而不是将它们列出来?

这可能吗?我正在创建一个单一的基础工厂函数来驱动不同类型的工厂(但有一些相似之处),我希望能够将参数作为数组传递给基础工厂,然后可能会创建一个新对象的实例来填充参数相关类的构造函数通过数组. 在 JavaScript 中,可以通过 apply 方法使用数组来调用具有多个参数的函数: namespace.myFunc = function(arg1, arg2) {//做某事;}var re ..
发布时间:2021-11-16 23:03:39 前端开发

我可以使用带有构造函数的 apply() 来传递任意数量的参数吗

我有一个函数,它可以接受带有休息运算符的可变数量的参数. 我想创建一个对象,将使用 rest 运算符收集的参数直接传递给构造函数,而无需创建对象并调用初始化函数,也无需传递整个数组但参数啊我用 apply() 函数做的. 有可能吗?使用 apply 不起作用. public function myFunc(...arg) {//链接“new MyClass.apply(args)"返 ..
发布时间:2021-11-16 23:00:34 其他开发

如何使用 TFS API 创建新的源代码分支?

我正在尝试使用 API 创建一个新分支,并且同时使用了 PendBranch() 和 CreateBranch().CreateBranch() 的问题是它会立即提交,我希望能够在签入分支时添加注释.所以,我所做的如下所示. 基本上,我从 Windows 应用程序获取所有信息,例如要映射的服务器项和本地项以及分支的源和目标. 不知何故,当我看到源代码管理资源管理器时,它仍然显示 “未映 ..
发布时间:2021-11-15 01:20:55 其他开发

为什么使用带有 C++ 'vector' 的 new 调用?

代码 vectormyVector; 动态分配内存,因此任何存储的元素将一直存在,直到 delete 被调用.那么下面的 vector 怎么样?*myVector = new vector();,与之前的不同(除了是一个指针)? 这里是否发生了双重分配?每个人都提到将 vector 与 new 调用混合在一起是邪恶的,但为什么呢?如果它是邪恶的,为什么它是编译器可以接受的 ..
发布时间:2021-09-17 19:05:56 C/C++开发

在循环中创建新的指针对象

说我做这样的事情 for(int i = 0; i 在循环中使用指针对象后是否需要删除指针对象?我在想,如果我不删除它,它会不断创建一个新对象 10 次,然后该对象就挂在那里,吃资源. 解决方案 是的,对于每一个new,都需要有一个对应的delete.(并且每个 new[] 都有一个 delete[].) 然而,C++ 的方式是尽可能避免动态存储,而是使用局部、自动变量: f ..
发布时间:2021-06-18 19:57:17 C/C++开发