加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – ‘uintmax_t’到’size_t’和’unsigned int’转换中的数据

发布时间:2020-12-16 09:37:40 所属栏目:百科 来源:网络整理
导读:我明白了: warning C4244: ‘initializing’ : conversion from ‘uintmax_t’ to ‘unsigned int’,possible loss of data 上: boost::shared_arraychar buffer( new char[file-size]); ……然后这个: warning C4244: ‘argument’ : conversion from ‘
我明白了:

warning C4244: ‘initializing’ : conversion from ‘uintmax_t’ to ‘unsigned int’,possible loss of data

上:

boost::shared_array<char> buffer( new char[file->size]);

……然后这个:

warning C4244: ‘argument’ : conversion from ‘uintmax_t’ to ‘size_t’,possible loss of data

上:

boost::asio::write(*socket,boost::asio::buffer(buffer.get(),file->size));

我会害怕还是没事?

解决方法

可能file-> size的类型为uintmax_t,大于operator new []占用数组大小??的size_t.通常,第一个可以是64位整数,而第二个只能是32位.

实际上,当您尝试处理超过4GB的文件时,这会导致问题,因为size_t不能表示如此大的字节数.如果您只希望处理较小的文件,其中size_t足够大以存储文件大小,则不会出现问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读