Я получаю странную ошибку, когда использую gcc для компиляции своего кода на c.
Это моя ошибка: http://pastebin.com/dN4xXbQZ
Это мой код:
// MemroyAllocationTester.c // 2.20.11 // calloc() function allocates a group of objects. // rather than malloc() which allocates a group of bytes. #include <stdio.h> #include <stdlib.h> // for calloc and free main() { unsigned num; int *pointer; printf("Enter the number of type int to allocate: "); scanf("%d", &num); pointer = (int*)calloc(num, sizeof(int)); //if (pointer == NULL) // puts("Memory allocation failed."); //else // puts("Memory allocation was successful."); return(0); }
Ваша проблема в том, что ваш исходный файл - Unicode (UTF-16), но ваш компилятор ожидает ASCII (или UTF-8).Вам нужно сохранить исходный файл как ASCII (или UTF-8).
Вы могли бы попробовать скомпилировать с gcc -finput-charset=UTF-16, но я подозреваю, что это не сработает, потому что тогда он может попытатьсяинтерпретировать заголовочные файлы как UTF-16, а это не так.
gcc -finput-charset=UTF-16
Ваша программа имеет метку порядка байтов в юникоде (0xFEFF) в начале файла. Я ожидаю, что вы не хотите этого. Избавьтесь от этого и составьте скучный старомодный открытый текст. Вероятно, по какой-то причине ваш файл - UTF-16. Похоже, ваш компилятор не справится с этим - измените его на UTF-8 или ASCII.
0xFEFF
Не думаю, что это связано с calloc, вам, вероятно, удалось включить в исходный файл несколько символов, отличных от ascii.
calloc
Единственное, что я вижу, вы не должны делать в C, этоотыграть возврат от calloc или malloc.
malloc