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:鼓励年轻且易受伤害的人使用newdelete 简直是残酷的...... @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_ptrstd::unique_ptr (C++11) 之类的东西:

std::shared_ptr<Example> pExample;

【讨论】:

以上是关于C++ Struct 动态内存分配的主要内容,如果未能解决你的问题,请参考以下文章

C++内存分配及变长数组的动态分配

C++ 动态分配内存

在 C++ 中的 2D 动态内存分配数组中释放分配的内存

C++程序的内存分区,为什么要使用动态内存,动态内存的分配使用释放

优化动态分配内存的变量

C++ 动态内存分配(6种情况,好几个例子)