两个c文件
main.c
#include <string.h> |
#include <stdlib.h> |
编译
gcc -c main.c
gcc -c test.c
gcc -o test main.o test.o
运行
./test
咔咔的core dump。
为啥呢?我的机器是64位,这个例子代码只会出现在64位机器上
gdb发现,myalloc返回的指针式64位的,但tmp却只截取了后32位,高位32位给丢弃了,为啥呢,因为编译main.c的时候,没有找到myalloc函数的定义,默认他返回int型的整数,当运行的时候虽然myalloc返回64bit的指针,但是强转成32位的整数然后复制给tmp。
所以应该在main.c里加上myalloc的声明
extern void* myalloc(int size); |