• 5165阅读
  • 3回复

C++分配数组出现端错误。(已解决) [复制链接]

上一主题 下一主题
离线edsionte
 
只看楼主 倒序阅读 楼主  发表于: 2011-05-03
我的问题如下:


我先定义了一个char *logItem[NUM]
稍候依次为logItem指针malloc了len大小的空间。
当NUM 为200以下时没问题。
稍大一些就会出现端错误


请问,我的错误点在那?
[ 此帖被edsionte在2011-05-18 08:43重新编辑 ]
离线XChinux

只看该作者 1楼 发表于: 2011-05-03
把代码帖上来看看
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线edsionte
只看该作者 2楼 发表于: 2011-05-03
回 1楼(XChinux) 的帖子
log个是通过malloc分配的超大的字符串数组,
里面的字符串通过空格隔开。
下面的这个函数就是通过空格对log的字符串进行解析
每解析一条,就将其存储在logItem中。
最后返回解析的条目数。

int logShowUI::getLogItemSum(char **logItem, char *log, int len)
{
    int i, item;
    int start, end, tmplen;
    QString loginfo(log);
    char tmp[500] = {'\0'};

    item = 0;
    for (i = 0; i < len; ) {
        printf("item = %d---\n", item);
        start = i;
        end = loginfo.indexOf('\n', start);
        tmplen = end - start;
        logItem[item] = (char *)malloc(tmplen * sizeof(char) + 10);
        memset(logItem[item], 0, tmplen + 10);
        strcpy(tmp, loginfo.mid(start, tmplen).toAscii());
        strcpy(logItem[item], tmp);
        logItem[item][tmplen + 1] = '\0';
        item++;
        i += tmplen + 1;
    }

    return item;
}
离线edsionte
只看该作者 3楼 发表于: 2011-05-18
问题已经解决,
是我发送的问题。
发送的数据太多。超出了socket的缓冲区


分开发送即可。
快速回复
限100 字节
 
上一个 下一个