当我使用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);
}
答案 0 :(得分:4)
您的问题是您的源文件是Unicode(UTF-16),但您的编译器需要ASCII(或UTF-8)。您需要将源文件保存为ASCII(或UTF-8)。
你可以尝试使用gcc -finput-charset=UTF-16
进行编译,但我怀疑它不会起作用,因为它可能会尝试将头文件解释为UTF-16,但它们不是。
答案 1 :(得分:2)
您的程序在文件开头有一个unicode byte order mark(0xFEFF
)。我希望你不要那样。摆脱它并编译无聊的老式明文。由于某种原因,您的文件可能是UTF-16。看起来您的编译器无法处理 - 将其更改为UTF-8或ASCII。
答案 2 :(得分:1)
不要认为这与calloc
有关,你可能在源文件中设置了一些非ascii字符。
我在C中唯一不应该做的就是从calloc
或malloc
投出回报。