| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1036 人关注过本帖
标题:malloc失败搞不定了
取消只看楼主 加入收藏
udefine
Rank: 1
等 级:新手上路
威 望:1
帖 子:13
专家分:7
注 册:2021-10-31
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:1 
malloc失败搞不定了
想把命令行参数保存在全局变量中,在其他地方用,结果有注释的一行会在malloc是失败,怎么回事啊?

程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

static int argnum;
static char **argstrs;

int main(int argc, char *argv[])
{
    argnum = argc;
    argstrs = (char **)malloc((argc-1)*sizeof(char *));
    int k;
    for (k = 1; k < argc; k++) {
        int j=k-1;
        char *str = argv[k];
        int slen = strlen(str);
        printf("%d: %s\t\t%d\n",k,str,slen);
        char *nstr=(char *)malloc(slen*sizeof(char));//传4个参数,最后一次此行会分配内存失败,不知道为什么
        //printf("%s\n", nstr);
        strcpy(nstr, str);
        *(argstrs+j)=nstr;
    }
    return 0;
}
搜索更多相关主题的帖子: int 失败 malloc char str 
2022-03-07 21:23
udefine
Rank: 1
等 级:新手上路
威 望:1
帖 子:13
专家分:7
注 册:2021-10-31
收藏
得分:0 
确实是少分配了一字节内存,slen+1后就好了
2022-03-08 14:54
快速回复:malloc失败搞不定了
数据加载中...
 
   



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

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