【发布时间】:2017-03-29 16:10:10
【问题描述】:
我有一个 int 数组,当它看到比它已经拥有的更高的 int 值时需要增长,有没有办法调用 realloc() 并设置正在创建的内存中的所有新空间?还是我需要遍历内存中的所有新空间并将它们一一设置为0?为了清楚起见,下面的代码。
int main(){
int i;
int currentSize = 10;
int *checkList = malloc(sizeof(int) * currentSize);
while((i = readInt(fp))){
if(i > currentSize){
currentSize = i + 1;
checklist = realloc(checkList, sizeof(int) * (i + 1));
//Need to loop through checklist and declare empty mem to 0?
}
if(!checkList[i]) checkList[i]++;
}
//should have an array where seen values index in checklist == 1
}
【问题讨论】:
-
所以我需要分配一个新数组,将所有这些设置为 0,然后将值逐项复制到新数组中
-
不,只是初始化新元素。
-
if(i > currentSize)应该是if(i >= currentSize),因为(例如)如果i是 10,则超出了分配的初始范围。 -
建议以
int currentSize = 0; int *checkList = NULL;开头