我有一个std::vector<const char*>
,由.push_back("something")
填充。如何删除不包括std::string
标题的内容?delete
分段故障并且std::free
需要void*
;无法使用类型为"const char*"的左值初始化[..];。
您可以delete
,而只能new
。您没有使用new
来创建字符串文字,因此在它们上使用delete
将导致未定义的行为。不要那样做。类似地,您可以只free
您的malloc
(加上内部malloc
的一些相关函数(。
字符串文字具有静态存储持续时间。这意味着他们的存储在程序结束时会自动解除分配,而无需您的干预。
您可以使用erase
成员函数从矢量中擦除指针。
字符串文字具有静态存储持续时间。您不能使用运算符delete来删除它们。字符串文字将一直有效,直到程序结束,
您可以删除使用运算符new创建的内容。
您可以擦除矢量的所有或选定元素,也可以完全清除它。
类似"something"
的字符串文本存储在可执行文件的只读段中。你不能delete
他们。而且,修改它们是未定义的行为。