Почему я получаю эту ошибку в C? - PullRequest
0 голосов
/ 20 февраля 2011

Я получаю странную ошибку, когда использую 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);
}

Ответы [ 3 ]

4 голосов
/ 20 февраля 2011

Ваша проблема в том, что ваш исходный файл - Unicode (UTF-16), но ваш компилятор ожидает ASCII (или UTF-8).Вам нужно сохранить исходный файл как ASCII (или UTF-8).

Вы могли бы попробовать скомпилировать с gcc -finput-charset=UTF-16, но я подозреваю, что это не сработает, потому что тогда он может попытатьсяинтерпретировать заголовочные файлы как UTF-16, а это не так.

2 голосов
/ 20 февраля 2011

Ваша программа имеет метку порядка байтов в юникоде (0xFEFF) в начале файла. Я ожидаю, что вы не хотите этого. Избавьтесь от этого и составьте скучный старомодный открытый текст. Вероятно, по какой-то причине ваш файл - UTF-16. Похоже, ваш компилятор не справится с этим - измените его на UTF-8 или ASCII.

1 голос
/ 20 февраля 2011

Не думаю, что это связано с calloc, вам, вероятно, удалось включить в исходный файл несколько символов, отличных от ascii.

Единственное, что я вижу, вы не должны делать в C, этоотыграть возврат от calloc или malloc.

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