C++ Struct 动态内存分配
Posted
技术标签:
【中文标题】C++ Struct 动态内存分配【英文标题】:C++ Struct Dynamic Memory Allocation 【发布时间】:2013-07-03 00:37:04 【问题描述】:我有一个这样定义的结构:
Struct Example
char arr[MAX_SIZE];
;
在 C 风格中,我可以使用Example * pExample = (Example*) malloc(sizeof(Example));
来获取指向动态分配内存的指针。现在我想知道是否有任何方法可以使用auto_ptr
智能指针来做同样的事情,而无需对数据结构进行任何更改。
谢谢
【问题讨论】:
您反对使用 new 和 delete 运算符的想法吗? @BrainSteel:鼓励年轻且易受伤害的人使用new
和delete
简直是残酷的......
@BrainSteel 如果可能的话,我想避免更改数据结构中的任何内容...在上述情况下,new Example()
将不起作用,对吧?
@AllanJiang 我相信如果你使用 Example* some_ex = new Example(),你会有效地做和你的 malloc() 一样的事情。
std::auto_ptr<Example> pexample ( new Example() );
呢?
【参考方案1】:
等效的 C++ 代码是:
Example *pExample = new Example();
但如果您需要智能指针,我不会推荐 auto_ptr
,因为它已被弃用。而是使用 shared_ptr
或 std::unique_ptr
(C++11) 之类的东西:
std::shared_ptr<Example> pExample;
【讨论】:
以上是关于C++ Struct 动态内存分配的主要内容,如果未能解决你的问题,请参考以下文章