如何删除/释放字符串文字



我有一个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他们。而且,修改它们是未定义的行为。

最新更新