-13
A
回答
0
新的运营商主要做了两两件事:
它分配足够的存储空间来保存请求的类型的对象。 (在上例中,它分配足够的内存来容纳此字符串对象)
- 它调用一个构造函数来初始化已分配内存中的对象。
现在这个“新”是调用哪个函数?
它是运营商新的。
void * operator new (size_t size);
返回类型是void *。 由于此函数返回一个指向raw的指针,该指针未被键入并且未初始化的内存足够大以容纳指定类型的对象。 size_t指定分配多少内存。
如果我们直接调用operator new,它会返回一个指向足够容纳一个字符串对象的内存块的指针。
void *pointRawMemory = operator new(sizeof(string));
运算符new类似于malloc。它只负责分配内存。它对构造函数一无所知。 “新”运算符的工作是采用运算符新返回并将其转换为对象的原始内存。
0
一个字符串对象被分配在动态存储区中并且它的构造函数被调用(接收const char *
的那个)。
然后,该构造函数的结果(对象的地址)被放入ptr
变量中,该变量可能存在于许多不同的存储区之一(如静态存储区或堆栈中),具体取决于声明实际上在你的代码中是。
这就是所有你需要知道的一切,“在...下”,这是一个实现细节。
根据operator new
和new
之间的差异,前者在较低的抽象层次上运行,只是简单地分配足够的内存来存储某些内容,而不调用任何构造函数。
相关问题
- 1. 全球运营商和会员运营商之间的区别
- 2. 新线运营商
- 3. 运营商新的Arduino的
- 4. 采用新的运营商
- 5. 运营商新的C++
- 6. 运营商新的超载和对齐
- 7. 新的运营商和引用错误
- 8. UNION运营商更新
- 9. 测试::运营商新
- 10. 全球运营商<<和成员运营商之间的共存<<
- 11. 从Java到C++和新运营商
- 12. 超载运营商新,没有超载运营商删除
- 13. “之间”运营商的jQuery QueryBuilder
- 14. 查询 - 运营商之间的PHP ADODB
- 15. 空 - 结合运营商和运营商&&
- 16. &&和||运营商
- 17. 位运算和booolean运营商之间的差异 '与'
- 18. Yii - Cdbcriteria - 选择在关系条件与运营商之间的位置
- 19. 未定义的运营商新引用
- 20. C++新的运营商使用问题
- 21. PHP新的运营商返回参考
- 22. 新的运营商返回null - C#
- 23. 使用新的运营商在C++
- 24. 新的运营商返回null
- 25. PHP更新与运营商的mysql表
- 26. 什么是==目标C isEqualToString和运营商之间之探源?
- 27. 与+运营商联系
- 28. 的javascript:运营商之间的回报值差 - 和 - =
- 29. C++ STL分配器VS运营商新
- 30. 致电班级专用运营商新
我非常怀疑你的问题是一个很适合这个网站。请参考:http://stackoverflow.com/help/how-to-ask。礼貌也有帮助。 – 2015-03-25 07:40:51
你自己研究了什么,你究竟知道些什么?由于这是一个相当初级的问题,我假设你正在从[好书](http://stackoverflow.com/q/388242/1782465)或教程中学习。它是如何解释的以及该解释的哪些部分不清楚? – Angew 2015-03-25 07:46:37