【发布时间】:2014-10-13 05:14:59
【问题描述】:
您可能知道,如果您想删除任何类型的动态分配数组(您使用了运算符new[]on),您应该使用delete[] 来删除它。
现在,我想知道是否有任何方法可以删除动态分配数组的单个对象。
char* someNewArray = new char[someInt];
//Add values to the array
delete &someNewArray[2] //or maybe delete[] instead of just delete
【问题讨论】:
-
你的“空”是什么意思?您希望用户如何在元素之间的
usr_answer中输入“空”字符? -
一个未初始化的数组可以包含任何东西。如果您希望它具有某些值,您可以检查然后将每个元素设置为该值。你最好使用
std::string。 -
@P0W 基本上我的计划是得到他的答案,得到给定答案中的字符数量(不指向任何内容),然后创建一个新的调整大小的字符数组。他不必输入空元素。只需输入一个字符集合,其字符数少于数组所能容纳的字符数。
-
@RetiredNinja 我调用 cin 时它不会自动“包含”值吗?不是只有空的元素吗?我想知道如何检查这些是否为 NULL。
-
它包含输入的内容,直到第一个空白字符、NULL,然后是未初始化数组中发生的任何其他内容。您显示的代码中的问题是您执行的比较不正确。
if(c == 0)会起作用,但我不会说这是正确的做法。如果输入 1001 个字符会怎样?使用std::string可以避免所有这些问题,因为它会调整大小以适应内容,您可以轻松确定该大小。如果必须使用原始字符数组,请使用strlen查找输入的长度。
标签: c++ pointers memory dynamic delete-operator