misc print problem
size_t和跨平台问题
需要注意的是size_t在不同平台下的具体数据类型可能是不一样的,如果要log输出,具体的控制符可能需要使用%zu,z可以控制具体的长度。
实际场景下可以记住一个参考的标准,int小于等于数据线的宽度,size_t大于等于地址线宽度。
size_t存在的最大原因可能是因为:地址线宽度历史中经常都是大于数据线宽度的。
有些机器下int和int64_t的定义都不尽相同,关于跨平台的问题,可以参考why is size_t matters查看具体的原因。
打印指针的地址
打印指针的地址,可以使用%p,这个是通用的,不需要关心具体的数据类型。
1
printf("%p\n", reinterpret_cast<void*>(ptr));
或者直接用cout也能输出指针的地址。
1
std::cout << reinterpret_cast<void*>(ptr) << std::endl;
This post is licensed under CC BY 4.0 by the author.