new-operator相关内容

使用CRT内存泄漏检测时编译错误

要检测内存泄漏,重新定义新关键字。 如果我使用[类型1],可以。但编译错误发生,如果我取消注释[类型2]。 有没有办法使用这两种类型的新的? #include #define new new(_CLIENT_BLOCK,__FILE__,__LINE__) struct Foo { int m_N; Foo():m_N(0){} }; ..
发布时间:2016-10-24 16:40:10 C/C++开发

boost :: make_shared不是调用(placement)运算符new?

我第一次使用boost :: make_shared创建共享指针指向的对象。主要是因为我们的代码太慢,单个分配真的有助于提高性能。 修复一些内存泄漏“硬手动方式”后,我决定实现一个简单的内存泄漏检测器通过覆盖所有相关类的新运算符,只是为了计数哪些对象仍然活在我们的应用程序中的特定点。我已经实现了几次之前,并惊讶地发现我的代码不再检测到任何对象。 我想我所要做的就是重写“placemen ..
发布时间:2016-10-24 12:48:16 C/C++开发

Malloc函数在C ++中

我从C过渡到C ++。在C ++中,malloc函数有什么用处吗?或者我可以使用“new”关键字声明它。例如: class Node { ... } ... Node * node1 = malloc(sizeof(Node)); // malloc Node * node2 = new Node; // new 我应该使用哪一个? 解决方案 ..
发布时间:2016-10-24 12:44:41 C/C++开发

alignas说明符和新的,c ++ 11

我的问题很简单; alignas说明符是否与新的一起使用? 也就是说,如果一个结构体被定义为对齐,当它被赋值为new时,它会被对齐。 解决方案如果你的类型的对齐方式没有过度对齐,那么是的,默认的 new 将工作。 “过对齐”意味着在 alignas 中指定的比对大于 alignof(std :: max_align_t)。默认的 new 将偶尔使用非重叠对齐类型;默认的内存分配器将总 ..
发布时间:2016-10-23 23:14:59 C/C++开发

C ++:是push_back(new Object())内存泄漏?

以下C ++代码是否为内存泄漏? list.push_back(new String(“hi”)); 据我所知,push_back从任何std集合/容器总是做一个副本。所以如果新的字符串被复制,没有什么可以删除新的字符串吗?因为在push_back之后没有引用它... 我在这里是正确的还是错误的? 非常感谢。 Jbu 编辑:我 ..
发布时间:2016-10-23 22:26:24 C/C++开发

这是第二个新的?

什么是第二行? (回答另一个问题时出现。) int * x = new int [1] int * y = new(x)int; 第二行x和y具有相同的值(指向同一个地方)后。 y = x和第二行有什么区别?它是一个构造函数还是什么? 解决方案 这是刊登位置新。它在 x 指向的内存中构造一个新的 int 。 如果你尝试: int * x = ..
发布时间:2016-10-23 22:03:51 C/C++开发

为什么我需要调用new?

可能的重复项: 何时使用“新建”按钮?而不是在C ++中? 何时在C ++中使用新关键字? 似乎我可以编程的东西,而不使用单词 new ,我永远不必担心删除任何东西,为什么我应该调用它? 从我的理解,这是因为我会用尽堆栈内存。 这是正确的吗?我想我的主要问题是,我应该什么时候调用 new ? 解决方案 这是一个对象生命周期问题:如果你堆栈分配你的对象,当这些对 ..
发布时间:2016-10-23 21:07:49 C/C++开发

重载新和删除

我尝试关注这篇文章: http://flipcode.com/archives/How_To_Find_Memory_Leaks .shtml 重载我的新功能和删除功能,以便跟踪内存泄漏。 但是 - 如果我尝试编译,我得到一个 C2365:“operator new”:redefinition;上一个定义是文件xdebug中的“函数” xdebug包含在xlocale中 ..
发布时间:2016-10-23 21:06:32 C/C++开发

为什么我需要调用new?

可能的重复项: 何时使用“新建”按钮?而不是在C ++中? 何时在C ++中使用新关键字? 似乎我可以编程的东西,而不使用单词 new ,我永远不必担心删除任何东西,为什么我应该调用它? 从我的理解,这是因为我会用尽堆栈内存。 这是正确的吗?我想我的主要问题是,我应该什么时候调用 new ? 解决方案 这是一个对象生命周期问题:如果你堆栈分配你的对象,当这些对 ..
发布时间:2016-10-23 21:03:15 C/C++开发

重载新和删除

我尝试关注这篇文章: http://flipcode.com/archives/How_To_Find_Memory_Leaks .shtml 重载我的新功能和删除功能,以便跟踪内存泄漏。 但是 - 如果我尝试编译,我得到一个 C2365:“operator new”:redefinition;上一个定义是文件xdebug中的“函数” xdebug包含在xlocale中 ..
发布时间:2016-10-23 21:03:09 C/C++开发

用新的分配大块内存

我需要用新的分配大块的内存。 我使用新的,因为我写一个模拟生产者一侧的二零件应用。实际的生产者代码是分配这些大块,我的代码有责任删除它们(处理后)。 有一种方法,我可以确保我的应用程序能够从堆中分配这么大量的内存?我可以将堆设置为更大的大小吗? 我的case是64块的288000字节。有时我得到12分配,其他时间我得到27分配。我得到一个std :: bad_alloc异常。 ..
发布时间:2016-10-23 19:54:29 C/C++开发

你应该分配多少内存?

背景:我正在编写一个使用大量地理数据的C ++程序,并希望加载大块来一次处理。我不得不使用为32位机器编译的应用程序。我正在测试的机器是运行一个64位操作系统(Windows 7)和6千兆RAM。使用MS VS 2008。 我有以下代码: byte * pTempBuffer2 [3]; try { // size_t nBufSize = nBandBytes * m_n ..
发布时间:2016-10-23 14:50:07 C/C++开发

创建一个对象指针数组C ++

我想创建一个数组来保存指向很多对象的指针,但我不知道预先保存的对象数量,这意味着我需要为数组动态分配内存。我想到了下面的代码: ants = new * Ant [num_ants]; for(i = 1; i { ants [i-1] = new Ant } 其中 ants 定义为 Ant ** ants; 和 Ant 是一个类。 $ b 解决方案 ..
发布时间:2016-10-23 12:18:39 C/C++开发

为什么新[-1]生成segfault,而新的[-2]引发bad_alloc?

我尝试通过向 new [] 传递一些负参数来测试 bad_alloc 异常。当传递小的负数时,我得到了我所期望的 - bad_alloc 。但是,当传递 -1 时,我可以看到我的对象被构​​造了几千次(我在构造函数中打印静态计数器),应用程序以segfault结束。 new [] 将有符号整数转换为 size_t 因此 -1 是 size_t 和 -2 的最大值 maximum - 1 等等 ..
发布时间:2016-10-23 11:32:53 C/C++开发

可以C ++ 0x仍然显式地分配与全局运算符new?

维基百科说明: 一个类型可能无法使用operator new分配: struct NonNewable { void * operator new(std :: size_t)= delete; }; 此类型的对象只能分配为堆栈对象或另一个类型的成员。它不能直接堆分配没有非便携的欺骗。 (因为placement new是在用户分配的内存上调用构造函数的唯一方法, ..
发布时间:2016-10-22 18:28:58 C/C++开发