ChinaUnix.net
相关文章推荐:

operator new 管理大内存

话说 new底层调用了malloc,只不过是多调用了 构造函数 (对类来说)。 所以说 new .malloc是用的同一个内存管理器,对不对? 求证。

by titer1 - C/C++ - 2012-10-29 21:28:44 阅读(1245) 回复(1)

相关讨论

如题,newnew[]的区别比较明显了,主要是new[]会多次调用构造函数,依次初始化对象。 但operator newoperator new[]不都是单纯的返回一个指向heap的void*指针么?有什么区别呢?请大家指教,谢谢!

by liwangli1983 - C/C++ - 2011-02-02 08:35:45 阅读(10300) 回复(14)

本帖最后由 Redshadows 于 2012-03-31 22:32 编辑 比如说 int *ptr = new int; ptr = new int; 这样我第一次分配的那块内存会不会被自动释放掉??? 求指点,谢谢~~

by Redshadows - C/C++ - 2012-04-01 09:52:13 阅读(1583) 回复(8)

本帖最后由 cxytz01 于 2013-08-23 10:32 编辑 请教关于c++中的类allocate,以及库函数operator new, operator delete的行为。 allocate a; T* t = a.allocate(n); // 分配未构造的内存 string *p_s = static_cast(operator new(1 * sizeof(string)); // 分配未构造的内存 a.construct(t, string("abc")); // 在内存中构造对象 new (p_s) string("abc"); // 在内存中构造...

by cxytz01 - C/C++ - 2013-08-23 21:56:30 阅读(5643) 回复(3)

本帖最后由 ywh147 于 2012-11-27 14:39 编辑 阅读asio的代码,发现一个非常难以理解的问题,即operator new的返回值始终一样。 详细过程是这样的,在reactive_socket_service_base.hpp里有这样的代码段: typename op::ptr p = { boost::addressof(handler), boost_asio_handler_alloc_helpers::allocate( sizeof(op), handler), 0 }; 这里的allocate其实是调用 :: operator new(size); 这里:: operator new...

by ywh147 - C/C++ - 2012-11-27 14:37:49 阅读(1183) 回复(0)

1 : ::operator new 是对 malloc 的一层浅浅封装, 2 : ::operator new 与 malloc 处于相同层次 个人认为是第一种情况, 不太确定,忘达人指点!

by windyrobin - C/C++ - 2009-12-22 10:38:18 阅读(8250) 回复(14)

C++中 "operator new" 和"new operator "是两个不同的概念吗?有什么区别? 谢谢!

by lc1999 - C/C++ - 2008-10-27 00:49:37 阅读(7553) 回复(5)

在自定义函数中用new动态分配内存。 函数执行完后用new动态分配的内存会不会自己释放掉??

by cexoyq - C/C++ - 2005-08-05 11:45:01 阅读(1249) 回复(5)

template class GCPtr { T *addr; ..............; public: operator T *() {return addr;} 这句事干吗的,不懂???? 开头的那个operator 是什么?

by 灰色骆驼 - C/C++ - 2006-11-18 22:15:09 阅读(2745) 回复(6)

首先谢谢你打开这个帖子哈 恩,我的意思是,当动态分配内置类型数组的时候,为什么分配正好的内存呢,这样,delete[]的时候怎么识别是否到了数组尾阿? 如这个小程序,[code]void* operator new[](size_t w{ void *p=::operator new(w); cout<<"w:"<new表达式所要求的字节数 return p; } int main() { int *p2=new int[5]; cout<<"p2:"<

by Beginnor - C/C++ - 2012-06-17 22:31:01 阅读(1844) 回复(6)

我自己在自测自己的一个程序,在一定程度的并发下去外网下载东西,结果跑到某一程度挂了,产生一个大小为180M的CORE。按理来说,出事的时候,根据CORE的大小,应该进程只耗了200多M的内存。但是,用GDB调试时,发现是一句代码 char* aks=new char[200*1024],这里挂了。我在想,是不是因为我分配和回收内存的频率太高,在某一程度时刻,随然我实际占用的内存并没那么大,但是我一次就要分配200K的堆,堆里找不到连续的一大片内存给...

by BestPersonal - C/C++ - 2010-08-18 10:17:39 阅读(2142) 回复(4)