在std :: set容器中使用常量字符指针:内存消耗

我目前正在研究一个内存很少的设备(4MB),我的程序组件需要一个std :: set。我想将这个集合从使用std :: string迁移到使用const char指针,但我想知道在std :: set中使用时如何将内存分配给常量字符指针。 将指针从集合中移除(通过使用.clear()或超出范围)时,是否释放为std :: set的每个条目分配的内存,或者字符串文字是否保留在内存中直到结束程序的执行? 非常感谢您的帮助。 :)     
已邀请:
STL容器总是在清理它们时包含的元素的默认析构函数。对于一个持有原始'char *'指针的集合,这将不起作用,内存将被泄露。你有责任自己清理这种记忆。 因此,将原始指针存储在STL容器中通常被认为是不好的做法。 如果你真的必须使用带有原始C字符串的STL集,那很好,但要注意你必须自己回收内存。您还需要为集合提供自定义比较器,以便通过值而不是指针比较存储的字符串('char *'的默认排序只是比较指针,而不是字符串)。     
简而言之,什么都不会发生。 删除包含指向某个内存的指针的结构只会释放指针本身使用的内存;它不会导致指向记忆的任何事情发生。 当然,除非你明确地打电话给
free
/
delete
。在字符串文字的情况下,这不是一个好主意!     

要回复问题请先登录注册