qt4.3.3在VC6中使用gb2312编码的bug

准确的说VC6在使用小内存分配时如果小内存的数量超过16MB就会出现异常,MSDN在线支持上还给出了测试例子。

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    char *pData;
    for(int i = 0; i < 70000; ++i)
    {
        pData = (char *)malloc(32);
        pData = (char *)realloc(290);
    }
    return 0;
}
因为是使用Qt4.3.3时出的bug,开始使用的QT库不是编译安装的,不能调试也不清楚具体的原因。后来重新编译了qt才准确定位到异常点。在QT4.3.3中使用gb2312编码格式调用QString::fromLocal8Bit(const char*)时采用动态增长内存的方式(realloc),如果数据量比较大,分配的小内存数量超过了16MB就会出现异常。而采用其它的编码格式不存在这样的问题,因为他们的数据是使用malloc分配的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值