明明本身就是长度了还用sizeof

			char* jname = new char(hClip.clipNameNum);
			file.read((char*)jname, hClip.clipNameNum);
			cout <<"old name"<<string(jname)<<endl;
			char* jname = new char(hClip.clipNameNum);
			file.read((char*)jname,sizeof(hClip.clipNameNum));
			cout <<"old name"<<string(jname)<<endl;

第一段是正确的,第二段是错误的。我将要读取的长度存入hClip.clipNameNum,但是读取的时候却对其取了sizeof,得到的自然是int的长度,永远为4,而我要读取的长度在这里只有2,导致永远多了两字节,我百思不得其解。但是我又不能简单粗暴的直接-2调整读取位置,因为这里的读取长度不一定是2(如果这里永远是2的话,我可能直接-2了事,应急处理bug 的时候这样做可行)。直到我突然意识到,我为嘛要取sizeof???

错误难度:1
错误的愚蠢程度:5
耗时:1.5h

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值