对存储块中的变量求和

时间:2019-02-02 12:47:26

标签: pointers

/ 我试图动态创建一个内存,然后对输入的值进行求和,就像在数组中那样,但是我不了解逻辑错误的原因。 /

#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;
}

1 个答案:

答案 0 :(得分:0)

在这一行for(;intPtr<=endOfInt;intPtr++){中,您将增加指针variabl intPtr。 在free(intPtr);行中,您尝试释放上面分配的内存。 但是,此时intPtr的值与malloc返回的值不同。

通常,传递给free()的地址必须与从malloc()返回的地址完全相同。