c - int* 动态重新分配在 C 中的大小为 8 时失败?
问题描述
我想将整数存储在动态分配的 int 数组中
这是代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int *arr = (int*) malloc(sizeof(int)); //Size 1 int
for(int i = 0; i < 10 ; i++) //loop for inserting elements
{
arr[i] = i; //insert i element
printf("%d\n", i + 2); //prints arr size + 1
arr = (int*) realloc(arr, i + 2); //realloc int* size + 1
}
return 0;
}
这是结果:
~/eda/practica7/ $ ./test
2
3
4
5
6
7
8
realloc(): invalid next size
Aborted
无论我做什么,我的 int* arr 的 realloc 总是停止在大小 8 处。
我已经检查过是否有足够的可用内存,而且看起来确实如此。
有任何想法吗?
解决方案
推荐阅读
- sql - 如何在 postgresql 中使用触发器将新生成的 id 插入到另一个表中?
- xml - 如何在 Python 3.7 中使用 HTML 实体解析 XML/XLIFF
- python - 如何正确计算百分比
- typo3 - 如何解锁 TYPO 的安装工具 (/typo3/install.php)?
- python - 为什么在 python for-loop 中计算临时变量会占用这么多内存?
- interface - 使用 SysML/UML 的接口定义和端口类型
- node.js - 错误:SQLITE_ERROR:靠近“READD”:语法错误
- java - 警告:SQL(org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions)错误:1064,SQLState:42000
- ios - NativeScript 中的状态栏样式
- android - android os 的 BroadcastReceiver 什么都不返回