回复 2 楼 Andrew_Lee
刚才下载了 glibc 的源代码看了一下,在 glibc 2.2.5 版本下的 malloc.h 中的定义是这样的
#if defined(__STDC__) || defined (__cplusplus)
# include <stddef.h>
# define __malloc_ptr_t
void *
#else
# undef
size_t
# define size_t
unsigned int
# undef
ptrdiff_t
# define ptrdiff_t
int
# define __malloc_ptr_t
char *
#endif
但是在 Ubuntu 14.04 下的 glibc 2.19 版本的就没有这个定义了,直接变成
#ifndef _MALLOC_H
#define _MALLOC_H 1
#include <features.h>
#include <stddef.h>
#include <stdio.h>
#ifdef _LIBC
# define __MALLOC_HOOK_VOLATILE
# define __MALLOC_DEPRECATED
#else
# define __MALLOC_HOOK_VOLATILE volatile
# define __MALLOC_DEPRECATED __attribute_deprecated__
#endif
这里还是应该改成void *的。
谢谢你的帮助!
[
本帖最后由 石下醉客 于 2014-5-2 02:36 编辑 ]