| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 490 人关注过本帖
标题:__malloc_ptr_t 是什么类型
只看楼主 加入收藏
石下醉客
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2014-5-1
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
__malloc_ptr_t 是什么类型
今天在Ubuntu14.04下编译一个yael库,make后提示 error: unknown type name ‘__malloc_ptr_t’,但是之前在12.04下编译没有问题,请问这个类型是什么,是在C标准库中定义的么?怎么解决呢?
2014-05-01 02:18
Andrew_Lee
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:185
专家分:626
注 册:2014-3-21
收藏
得分:20 
这是一个指针了,应该是内核版本不一样,新版本里没有使用这个类型了,原型是:
# define __malloc_ptr_t  char *

2014-05-01 09:54
石下醉客
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2014-5-1
收藏
得分:0 
回复 2 楼 Andrew_Lee
您好,我想确实是由于内核版本不同引起的,不过我看到一种说法原型是typedef void * __malloc_ptr_t,void * 和 char * 应该没有什么不同吧。
2014-05-01 23:27
石下醉客
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2014-5-1
收藏
得分:0 
回复 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 编辑 ]
2014-05-02 02:27
快速回复:__malloc_ptr_t 是什么类型
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020129 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved