c++ - 数组中是否也可以动态删除内存?

标签 c++ arrays memory-management

假设我已经声明了一个字符数组,并从用户那里获取了一个字符串,如下所示:

char s[100000];
std::cin>>s;

现在假设用户输入了字符串"Program"。我的字符数组如下所示:

'P''r''o''g''r''a''m''\0'......(99992 remaining indices with no/junk values)

有没有办法释放那些 99992 索引占用的空间?类似地,如果我有一个大小为 100000 的整数数组,并且我在运行时只使用前 10 个索引,有没有办法在我的程序运行时调整我的数组大小。我知道我们可以为此目的使用 vector ,但是使用数组有可能吗?对于整数数组,我知道我们可以动态声明数组,然后根据我们的要求声明大小,但假设我有 10 个整数的数组,如下所示:

1 2 3 4 5 6 7 8 9 10

现在,我只想使用前 9 个索引和 wnat 来删除第 10 个索引。换句话说,除了动态分配之外,数组是否也可以进行动态删除?

编辑: 我知道使用 STL 可以做到这一点,但我想知道我们是否可以在数组中做同样的事情?

最佳答案

没有。

如果你有定义为固定大小的数组,你不能在运行时释放这些数组的一部分。使用某种动态分配的数组——可能是 stringvector<int>分别为您的两个示例数组,尽管 vector<char>也可能对您来说足够好。

关于c++ - 数组中是否也可以动态删除内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22527703/

相关文章:

c# - 如何从委托(delegate)获取 C# 函数中的地址?

php - PHP中使用foreach循环的多维数组

面临异常时构造函数中的c++空闲内存分配

c++ - 如何使用 std::is_same 生成编译时错误?

c++ - 指向同一个位置的两个指针?

c++ - 是否有一些用于模拟 Glib::Dispatcher 的 Boost 功能?

c - 如何在不使用数组存储原始文件内容的情况下对文件中的一百万个整数进行排序并保存在另一个文件中?

JavaScript 字符串数组不进行比较

PHP 通过引用传递增加了内存使用

c - 存储更多 bool 值的最有效方法