sizeof
很久以前曾经被wchar的问题在iOS和Android上被坑过,这次是在参研一份有年头的代码时又遇到了宽字符的问题,当然,也是和wchar有关系的,就是这个wchar在各个系统平台下的sizeof问题,关键的是一段UTF-8转UTF-16的代码: wchar_t cp; 这段代码在win下可以正常将utf-8的char*转换为utf-16的char*,但在Android iOS下却不能得到和win下一样的转换结果,刚发现这个问题时,以为又是当年遇到的wchar坑,宽字符函数不支持之类的,但是仔细看了下并没有用到什么字符串函数,转换部分也是自己实现的,最后在各平台调试器的帮助下找到了问题:
这是在上看到的一个问题。下面这段小程序的本意是打印出数组中的所有成员: 但是实际的运行结果却不是这么回事。如果编译并运行这段程序的话,你看不到任何输出
很久以前曾经被wchar的问题在iOS和Android上被坑过,这次是在参研一份有年头的代码时又遇到了宽字符的问题,当然,也是和wchar有关系的,就是这个wchar在各个系统平台下的sizeof问题,关键的是一段UTF-8转UTF-16的代码: wchar_t cp; 这段代码在win下可以正常将utf-8的char*转换为utf-16的char*,但在Android iOS下却不能得到和win下一样的转换结果,刚发现这个问题时,以为又是当年遇到的wchar坑,宽字符函数不支持之类的,但是仔细看了下并没有用到什么字符串函数,转换部分也是自己实现的,最后在各平台调试器的帮助下找到了问题:
定义一个空类型,里面没有任何成员变量和成员函数,对该类型求sizeof,得到的结果是几? 问:定义一个空类型,里面没有任何成员变量和成员函数,对该类型求sizeof,得到的结果是几? 答:空类型实例中不包含任何信息,但是当我们声明该类型的实例的时候,它必须在内存中占有一定的空间,否则无法使用这些实例。至于占多少空间,由编译器决定。Visual Studio中每个空类型的实例占用1字节的空间
