C++ 在C+中删除转发列表是否安全+;?

C++ 在C+中删除转发列表是否安全+;?,c++,pointers,delete-operator,forward-list,C++,Pointers,Delete Operator,Forward List,我有一个我正在做的个人项目,在这个个人项目中,我使用了一个转发列表来存储一些文件的信息。 然后我去玩一个游戏,突然我想:这是我的f_列表安全吗? 在我的项目中,我刚刚使用了delete指向列表的指针 std::forward_list<fileInfo> *lst; lst = new std::forward_list<fileInfo>; *lst = getDirectoryFiles(cfg->logDirectory); lst->sort(); /

我有一个我正在做的个人项目,在这个个人项目中,我使用了一个
转发列表
来存储一些文件的信息。
然后我去玩一个游戏,突然我想:这是我的
f_列表
安全吗? 在我的项目中,我刚刚使用了
delete
指向列表的指针

std::forward_list<fileInfo> *lst;
lst = new std::forward_list<fileInfo>;
*lst = getDirectoryFiles(cfg->logDirectory);
lst->sort();
// do something
delete lst;
std::转发列表*lst;
lst=新标准::转发列表;
*lst=getDirectoryFiles(cfg->logDirectory);
lst->sort();
//做点什么
删除lst;
我对(uint I=0;I<1000000;++I)lst>push_front(I);
)运行了一个单独的测试(
),并且
删除
按预期工作(在任务管理器中,此列表的内存约为77MB,删除后约为400KB)

但我仍然担心这在所有编译器和操作系统中是否安全(我在MSVC2013中尝试过)


我是否应该先调用
clear()
查看列表,然后再在指针上单击
delete
。盒子里面有一个摄像头,外面有一个显示屏,显示盒子里手机上的内容。它有一个奇妙的触摸瓦尔多斯,可以触摸你在盒子上触摸到的任何东西,但是在电话上

如果盒子损坏了,它甚至会损坏手机

手机屏幕不会显示得更大

他们来找你,问你是否可以把盒子(里面有电话)送到电子回收公司

答案是“当然,这是安全的”,但真正的问题是,他们为什么要首先建造这个盒子

在这个类比中,框是指针,对
new
的调用正在创建框。对
delete
的呼叫正在回收它(手机在里面)


手机是转发列表。

想象有人拿着盒子里的手机四处走动。盒子里面有一个摄像头,外面有一个显示屏,显示盒子里手机上的内容。它有一个奇妙的触摸瓦尔多斯,可以触摸你在盒子上触摸到的任何东西,但是在电话上

如果盒子损坏了,它甚至会损坏手机

手机屏幕不会显示得更大

他们来找你,问你是否可以把盒子(里面有电话)送到电子回收公司

答案是“当然,这是安全的”,但真正的问题是,他们为什么要首先建造这个盒子

在这个类比中,框是指针,对
new
的调用正在创建框。对
delete
的呼叫正在回收它(手机在里面)


电话是转发列表。

为什么您首先要
new
a转发列表?是的,可以删除它,但无论如何都不需要动态分配。@juanchopanza为什么有人首先要使用
转发列表@T.C.因为它就在那里:-)我想一定有人需要它,否则它就不会成为标准。也许是为了阻止“我的单链表不起作用”的无休止的流动关于这方面的问题。我想补充一点,如果你不确定是否正确释放了内存,你可以使用valgrind for linux或Purify on windows来测试泄漏。我不知道是否所有的文件都可以像使用向量或数组一样存储在连续内存块中,或者只是键入[],f_list是我的第一个想法。我想我需要一个动态分配,因为除了声明之外的所有东西都在每隔几分钟运行一次的循环中。我错了吗?为什么你首先要
new
forward\u列表?是的,可以删除它,但无论如何都不需要动态分配。@juanchopanza为什么有人首先要使用
转发列表@T.C.因为它就在那里:-)我想一定有人需要它,否则它就不会成为标准。也许是为了阻止“我的单链表不起作用”的无休止的流动关于这方面的问题。我想补充一点,如果你不确定是否正确释放了内存,你可以使用valgrind for linux或Purify on windows来测试泄漏。我不知道是否所有的文件都可以像使用向量或数组一样存储在连续内存块中,或者只是键入[],f_list是我的第一个想法。我想我需要一个动态分配,因为除了声明之外的所有东西都在每隔几分钟运行一次的循环中。我错了吗?也许有一个简单的理由来构建一个包含这些属性的盒子。例如,它可能是防水的,而手机不是。错误的类比。@sergeya如果你的指针是防水的,那么Anolgy仍然有效。好吧,可能有一个简单的理由来构建一个包含这些属性的框。例如,它可能是防水的,而手机不是。错误的类比。@sergeya如果你的指针是防水的,那么Anoolgy仍然有效。