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

Posted NightPoetry

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了明明本身就是长度了还用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

以上是关于明明本身就是长度了还用sizeof的主要内容,如果未能解决你的问题,请参考以下文章

spring mvc后台的API,测试中,总提示接口实体的某一个字段不能为null,但是明明给值了还提示不能为空

数组的长度(c写法)

毕业5年了还不知道热修复?

strlen sizeof strcat strcpy区别

c语言数组长度函数

数据库建表的时候明明varchar还没有最大但是提示说长度太长的情况