Kyu*_*yuu 0 c arrays malloc realloc
当输入为'1 2 3 4 5 6 7 8 9 10 11'时预期输出应与输入相同.然而输出是'1 2 3 4 5 6 7 8 9 10 -1850774484'.仅在输入的整数超过10时才会发生.我的realloc系列在哪里出错了
#include <stdio.h>
#include <stdlib.h>
#define INITIAL_SIZE 10
int
main(int argc, char **argv){
int i = 0, num, size = 0, n = INITIAL_SIZE;
int *A;
A = malloc(n * sizeof(int));
if(A == NULL){
printf("OUT OF MEMORY\n");
exit(EXIT_FAILURE);
}
while(scanf("%d",&num) == 1 && getchar()!='\n'){
A[i] = num;
i++;
size++;
if (size >= n){
n = n * 2;
A = realloc(A,n * sizeof(int));
}
}
printf("Int Array: ");
for (i = 0; i <= size; i++){
printf("%d ", A[i]);
}
printf("\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这没有什么不对realloc.您正在最后一个循环中打印一个额外的未初始化索引.通过改变来修复它
for (i = 0; i <= size; i++)
Run Code Online (Sandbox Code Playgroud)
至
for (i = 0; i < size; i++)
Run Code Online (Sandbox Code Playgroud)
唯一的问题realloc是你不会像你那样检查它是否成功malloc.另一个问题是你没有释放分配的内存.
| 归档时间: |
|
| 查看次数: |
69 次 |
| 最近记录: |