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 ‘
我明白了:
上: boost::shared_array<char> buffer( new char[file->size]); ……然后这个:
上: 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足够大以存储文件大小,则不会出现问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |