| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2255 人关注过本帖
标题:关于malloc申请空间的问题,在线等...
只看楼主 加入收藏
lxk1732942
Rank: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:450
专家分:425
注 册:2018-9-4
结帖率:96.43%
收藏
已结贴  问题点数:20 回复次数:8 
关于malloc申请空间的问题,在线等...
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>

int main(void)
{
    char *p = (char *)malloc(sizeof(char) * 10);
    for (unsigned i = 0; i < 10; i++)
        p[i] = '6';
    printf("%s\n%u\n", p, strlen(p));
    system("pause");
    return 0;
}

运行结果:
图片附件: 游客没有浏览图片的权限,请 登录注册

为什么会这样?乱码是什么情况,大小也跟我申请的不是太一样...
搜索更多相关主题的帖子: malloc 申请 空间 include char 
2018-12-21 22:52
MeandC
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:8
帖 子:245
专家分:792
注 册:2018-7-14
收藏
得分:7 
用的是 VS吧,我以前用也碰到过这种情况,循环输入时每输入一个字符它会自动加尾零,你可已中断然后查看变量,每个字符之间是不是都加了尾零,给你看一下 code::blocks的结果吧。

图片附件: 游客没有浏览图片的权限,请 登录注册



[此贴子已经被作者于2018-12-22 01:33编辑过]


C果然是有点难啊!
2018-12-22 00:50
lxk1732942
Rank: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:450
专家分:425
注 册:2018-9-4
收藏
得分:0 
回复 2楼 MeandC
那后面的乱码是什么情况
2018-12-22 02:24
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10539
专家分:42927
注 册:2014-5-20
收藏
得分:7 
作字符串用时,注意字符串的一个重要属性:以'\0'作结束标志。
    for (unsigned i = 0; i < 10; i++)
        p[i] = '6';
    p[i] = '\0'; 这里加多一句
    printf("%s\n%u\n", p, strlen(p));
2018-12-22 05:45
kfyniriu
Rank: 6Rank: 6
等 级:侠之大者
威 望:9
帖 子:105
专家分:426
注 册:2018-7-6
收藏
得分:7 
字符串是以  '\0'  作为结束标志,当字符串没有\0作为结束标志时,默认没有结束,会导致越界
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>

int main(void)
{
    unsigned i;
    char *p = (char *)malloc(sizeof(char) * 11);
    for (i = 0; i < 5; i++)
        p[i] = '6';
        p[i]='\0';
    printf("%s\n%u\n", p, strlen(p));
    system("pause");
    return 0;
}


2018-12-22 09:46
lxk1732942
Rank: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:450
专家分:425
注 册:2018-9-4
收藏
得分:0 
get了
2018-12-22 11:02
lxk1732942
Rank: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:450
专家分:425
注 册:2018-9-4
收藏
得分:0 
get了
2018-12-22 11:03
lxk1732942
Rank: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:450
专家分:425
注 册:2018-9-4
收藏
得分:0 
回复 2楼 MeandC
有个问题,如果我需要开辟一个存放字符串的空间,是不是要多申请一个字节方'\0'?
2018-12-22 11:07
MeandC
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:8
帖 子:245
专家分:792
注 册:2018-7-14
收藏
得分:0 
一般存字符串不都是多申请一些空间吗,为什么要算这么准。

C果然是有点难啊!
2018-12-22 13:30
快速回复:关于malloc申请空间的问题,在线等...
数据加载中...
 
   



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

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