Неожиданный вывод для глобального массива структур в C - PullRequest
0 голосов
/ 26 марта 2019

Я пытаюсь манипулировать динамически размещаемым массивом структур, но не могу сохранить данные при вызовах функций, несмотря на то, что это глобальная переменная. Я использую файл заголовка для объявления глобальной переменной, файл с тем же именем, что и файл заголовка с реализациями функций, и основной файл, который запускает программу. Вот содержимое трех файлов:

things.h:

struct st {
    int number;
};

struct st *test;

// Function Declarations
int A();
int B();

things.c:

#include <stdio.h>
#include <stdlib.h>
#include <things.h>

    int A() {

        // Allocate size for 10 struct st's
    test = malloc(10*sizeof(test));
    test[5].number = -1;
    printf("%d\n", test[5].number);

    B();

    return 0;
}


int B() {

    printf("%d\n", test[5].number);

    return 0;
}

mainFile.c:

#include <stdio.h>
#include <stdlib.h>
#include <things.h>

int main() {

    A();

    return 0;
}

Не уверен, в чем проблема. Ожидаемый результат:

-1
-1

но вывод, который я получаю:

`-1`
`some-random-number-here`

Это очень простая копия того, над чем я на самом деле работаю, поэтому не беспокойтесь о динамическом размещении (должно быть динамическим) и проверке, возвращает ли оно вначале значение NULL.

Edit:

Как упоминали @xing и @cdarke, моя проблема была с моим malloc. Работает, как и ожидалось.

...