如何解决动态数组不断增长的意外输出
我正在尝试创建一个动态数组,该数组在需要时会增大,因为我不知道该数组实际有多大。我的代码似乎可以工作到数组的第8个元素,在那里我开始看到没有输入的非常大的错误值。不知道为什么会这样。
class _HomeHomeMadeListState extends State<HomeHomeMadeList> with AutomaticKeepAliveClientMixin { class _HomeHomeMadeListState extends State<HomeHomeMadeList> {
@override
bool get wantKeepAlive => true;
解决方法
数组的大小保持为1,并且在递增size
变量时不会增加。
您的代码可以工作到第8个元素,因为数组中直到第7个元素之后的相邻内存必须是可用的。 在C数组中,未检查索引越界,这是程序员的责任。
如果要增加或减少数组的大小,可以在while循环内使用realloc
:
arr=(int*)realloc(arr,sizeof(int)*size);
也请在代码中更正此if
条件,最初arrayindex为0,大小为1,这将导致错误。
如果(arrIndex> =大小)
{
size++;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。