标题:malloc函数问题,进来瞧瞧啊
只看楼主
智若愚
Rank: 2
等 级:论坛游民
帖 子:2
专家分:10
注 册:2010-6-9
结帖率:0
已结贴  问题点数:20 回复次数:7 
malloc函数问题,进来瞧瞧啊
今天用VS2008复制了一个MSDN里的例子,竟然出错了,大家来看看有没有道理啊~
#include <stdlib.h>

#include <stdio.h>

#include <malloc.h>
void main()
{
    char *string;
    string=malloc(_MAX_PATH);

    if(!string)
        printf("Insufficient memory available\n");
    else
    {
        printf("Memory space allocated for path name\n");
        free(string);
        printf("merery free\n");
    }
}
然后编译,出错....
f:\编程\win\malloc\malloc\12.cpp(9) : error C2440: “=”: 无法从“void *”转换为“char *”
1>        从“void*”到指向非“void”的指针的转换要求显式类型转换
只要把程序中string=malloc(_MAX_PATH);改为string=(char *)malloc(_MAX_PATH);就可以编译通过,但是我以前好像不用这样的,
大家看看
搜索更多相关主题的帖子: malloc 函数 
2010-09-26 19:47
cacker
该用户已被删除
得分:2 
提示: 作者被禁止或删除 内容自动屏蔽
2010-09-26 22:12
巔峰
Rank: 2
等 级:论坛游民
帖 子:31
专家分:30
注 册:2010-7-13
得分:2 
这个,malloc申请的空间肯定要强制转换成一定类型才能识别啊,给你个房子,没有门牌的话别人能找到么。
2010-09-27 00:29
清风拂晓
Rank: 8Rank: 8
来 自:火星
等 级:蝙蝠侠
威 望:1
帖 子:356
专家分:889
注 册:2010-8-13
得分:2 
string=malloc(_MAX_PATH);
这里应该是string=(* char)malloc(_MAX_PATH);
就是这样啊 不然你创建的类型没有说明他会把那个自动弄成VOID

清风拂暮(木)
2010-09-27 11:23
王玉雷
Rank: 2
等 级:论坛游民
帖 子:14
专家分:26
注 册:2010-9-19
得分:2 
呵呵,malloc()函数的返回值为空,所以要强制转化为char类型啊

2010-09-27 18:05
wsliuyunming
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:54
专家分:143
注 册:2010-9-26
得分:2 
这是人定的 你记住就可以  string = (char *)malloc(_MAX_PATH)
2010-09-27 18:10
求教C
Rank: 2
等 级:论坛游民
帖 子:10
专家分:12
注 册:2010-9-13
得分:2 
都是犀利的人。
2010-09-27 19:05
codeferever
Rank: 2
等 级:论坛游民
帖 子:12
专家分:31
注 册:2010-7-25
得分:2 
好几楼都在重复,干嘛呢?
2010-09-27 20:59



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-321423-1-1.html




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

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