/ 我试图动态创建一个内存,然后对输入的值进行求和,就像在数组中那样,但是我不了解逻辑错误的原因。 /
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int numOfElements,*intPtr,sum = 0;
scanf("%d\n",&numOfElements);
intPtr = (int *) malloc(numOfElements * sizeof(int));
int *endOfInt = intPtr +numOfElements-1;
for(;intPtr<=endOfInt;intPtr++){
scanf("%d", intPtr);
sum += *intPtr;
}
printf("\n%d\n",sum);
free(intPtr);
return 0;
}
答案 0 :(得分:0)
在这一行for(;intPtr<=endOfInt;intPtr++){
中,您将增加指针variabl intPtr。
在free(intPtr);
行中,您尝试释放上面分配的内存。
但是,此时intPtr的值与malloc返回的值不同。
通常,传递给free()的地址必须与从malloc()返回的地址完全相同。