为什么我在C中收到此错误?

时间:2011-02-20 19:07:55

标签: c

当我使用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 个答案:

答案 0 :(得分:4)

您的问题是您的源文件是Unicode(UTF-16),但您的编译器需要ASCII(或UTF-8)。您需要将源文件保存为ASCII(或UTF-8)。

可以尝试使用gcc -finput-charset=UTF-16进行编译,但我怀疑它不会起作用,因为它可能会尝试将头文件解释为UTF-16,但它们不是。

答案 1 :(得分:2)

您的程序在文件开头有一个unicode byte order mark0xFEFF)。我希望你不要那样。摆脱它并编译无聊的老式明文。由于某种原因,您的文件可能是UTF-16。看起来您的编译器无法处理 - 将其更改为UTF-8或ASCII。

答案 2 :(得分:1)

不要认为这与calloc有关,你可能在源文件中设置了一些非ascii字符。

我在C中唯一不应该做的就是从callocmalloc投出回报。