Так что в основном программа работает нормально, если я позвоню array_print(array);
с основного номера. Но когда я звоню array_print(array);
с edit.c программа вылетает!Программа вылетает при вызове функции изнутри функции
array.c
struct array* array_create()
{
struct array* array = (struct array*) malloc(sizeof(struct array));
array->data = (int*) malloc(sizeof(int) * 10000);
array->size = 10000;
return array;
}
void array_print(ARRAY array)
{
int i;
for (i = 0; i < array->size; i++)
printf("%d ", array->data[i]);
}
array.h
struct array {
int* data;
int size;
};
typedef struct array* ARRAY;
ARRAY array_create();
void array_print(ARRAY array);
edit.c
ARRAY array; // Which array is which?! I have one array in main too...
void edit()
{
array_print(array);
}
main.c
ARRAY array;
array = array_create();
edit(); // This makes the program crash
EDIT Что это значит в edit.c? Когда массив становится NULL? И то, что не звонит код в edit.c, ничего?!
ARRAY array = NULL; // When is this being called and why? I don't want to reset it, I want to work with the array in main...
void edit()
{
array_print(array);
}
'array', кажется, не будет определено ни объявлена в' edit'. Это глобально? – Kninnug
- массив, созданный до того, как вызывается edit()? – fritzone
Кто звонит? Я вижу вызов sort_perform. Можете ли вы инициализировать массив? 'ARRAY array = NULL;'. Затем в array_print убедитесь, что массив был инициализирован? – odedsh