标题:[求助]malloc问题
只看楼主
mjiujiang
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-8-29
 问题点数:0 回复次数:4 
[求助]malloc问题

#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <process.h>
#include <string.h>

char * Strcpy(char *Dest,char *Src)
{
char *p=Dest;
while(*Src!='\0')
*Dest++=*Src++;
return p;
}

main()
{
char *p="abcdefg";
char *p2=NULL;
p2=(char *)malloc(sizeof(p));
if(p2==NULL)
{
printf("Not enough memory to allocate buffer");
exit(1);
}

Strcpy(p2,p);
printf("%s",p2);
free(p2);
}

结果出错:abcdefg?葺葺葺葳

搜索更多相关主题的帖子: malloc char include Dest Src 
2006-10-18 22:04
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
得分:0 
以下是引用mjiujiang在2006-10-18 22:04:58的发言:

#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <process.h>
#include <string.h>

char * Strcpy(char *Dest,char *Src)
{
char *p=Dest;
while(*Src!='\0')
*Dest++=*Src++;
return p;
}

main()
{
char *p="abcdefg";
char *p2=NULL;
p2=(char *)malloc(sizeof(p));//p本身就没有分配空间
if(p2==NULL)
{
printf("Not enough memory to allocate buffer");
exit(1);
}

Strcpy(p2,p);
printf("%s",p2);
free(p2);
}

结果出错:abcdefg?葺葺葺葳


倚天照海花无数,流水高山心自知。
2006-10-18 22:06
mjiujiang
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-8-29
得分:0 
它不是刚开始有静态空间吗
2006-10-18 22:13
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
得分:0 
以下是引用mjiujiang在2006-10-18 22:13:28的发言:
它不是刚开始有静态空间吗

不会.指针哪会分配静态空间.
看看这个
#include<stdio.h>
void main()
{
char *str="jhfdjhjskhdf";
printf("%d\n",sizeof(str));
getch();
}
输出:2


倚天照海花无数,流水高山心自知。
2006-10-18 22:56
摄政王:多尔滚
Rank: 1
等 级:新手上路
帖 子:148
专家分:0
注 册:2006-7-9
得分:0 
那时因为你用TC,指针占两个字节,楼主分配空间不够,另外的原因是把字符串结束符'\0'丢了

19世纪是火车的时代,20世纪是汽车的时代,21世纪是网络的时代。有谁不同意?
2006-10-18 23:06



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




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

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