【发布时间】:2015-11-08 18:20:30
【问题描述】:
在这里阅读了几十个关于列表、向量、new 运算符、RAII 和this 非常好的内存分配描述的答案,我仍然无法想象满足以下需求的实际实现。请注意,我在 .net 及其内存管理方面最有经验,如果这有助于指导任何答案的话。
基本上,我有一个类(比如class RecordFile {})以特定格式封装文本文件。每行相当于我想添加到RecordList 实例拥有的std::list<Record> 的记录,其中class Record 从文件中的单行捕获数据。
在RecordList 类中,我有一个方法RecordList::Read() 逐行读取文件,创建一个新的Record 实例并将其添加到RecordList 实例拥有的列表中。
在这个Read() 方法中,有一个循环遍历文件的行,创建新的Record 实例。显然,一旦读取文件并且 Read() 方法完成,我希望记录列表保留在 RecordList 对象中,但如果不使用“新”运算符,我看不到如何做到这一点。
如何在不违反看似基本规则的情况下在 c++ 中执行此任务?在 .net 中,这将是微不足道的,并且完全按照所说的执行,不会对性能或内存泄漏造成任何风险。我知道 c++ 是一种不同的野兽,我正在努力掌握它。
【问题讨论】:
标签: c++ list object memory-management instantiation