Суммирование переменных в блоке памяти - PullRequest
0 голосов
/ 02 февраля 2019

/ Я пытался создать память динамически, а затем суммировать введенное значение, которое я сделал бы в массиве, но я не понимаю причину логической ошибки. /

#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 голосов
/ 04 февраля 2019

В этой строке for(;intPtr<=endOfInt;intPtr++){ вы увеличиваете указатель variabl intPtr.В этой строке free(intPtr); вы пытаетесь освободить память, выделенную выше.Однако intPtr не имеет того значения, которое было возвращено вам из malloc на этом этапе.

В общем, адрес, передаваемый free (), должен быть точно таким же, который был возвращен из malloc ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...