给定一个指针的STL vector,在销毁vector本身之前,必须释放每个元素。是否存在阻止STL库自动执行此操作的技术含义?
谢谢
发布于 2011-01-21 09:13:04
STL不为您做这件事的原因是它不知道它是否应该这样做。你可能有一个指向数组的指针向量(在这种情况下它需要执行delete[]),一个指向常规对象的指针(在这种情况下它需要执行delete操作),或者可能是来自某个自定义分配器的内存。这些指针也可以与其他一些对象共享,在这种情况下,删除它们会导致这些其他对象指向垃圾数据,从而导致未定义的行为。这些指针也可以指向堆栈分配的内存,在这种情况下,不需要释放内存。
发布于 2011-01-21 09:12:58
您可以存储在向量被析构时不应删除的指针
使用智能指针的向量(例如boost::shared_ptr)接收自动释放
发布于 2011-01-21 09:14:47
如果向量包含指针,并不意味着指针指向动态内存。如果是这样的话,应该对每个指针应用delete还是delete[]?如果指针指向使用placement new创建的对象,该怎么办?所有这些问题都应该由程序员来回答,而不是由库来回答。
https://stackoverflow.com/questions/4754452
复制相似问题