【发布时间】:2020-04-24 04:46:06
【问题描述】:
假设我有一个静态数组
int a[10];
在某些时候我想插入第 11 个元素的程序。所以它会抛出错误,因为索引超出范围错误。
所以我想创建动态数组a[]。不改变静态数组。而且我想在运行时对数组a[] 进行更多输入(意味着可伸缩性)。
【问题讨论】:
-
这是什么意思? “所以我想创建动态数组 a[]。而不改变静态数组。”
-
“所以它会抛出错误,因为索引超出范围错误。”它不会做这样的事情。你只会覆盖随机内存并创建一个安全漏洞,没有安全网来警告你。
-
一旦数组定义,它的大小就不能改变。而是为数组分配内存。
-
@JosephSible-ReinstateMonica 它具有未定义的行为。抛出超出范围的错误(无论“抛出”在 C 中可能意味着什么)是无限多种可能性之一。它很可能会破坏数组外的内存——除非编译器基于其行为已定义的假设优化了代码。
标签: c arrays dynamic-memory-allocation