
计算机相关
文章平均质量分 83
u010787096
这个作者很懒,什么都没留下…
展开
-
C语言的malloc(0)问题
malloc这个函数,会有一个阈值,申请小于这个阈值的空间,那么会返回这个阈值大小的空间。首先来解释malloc(0)的问题,这个语法是对的,而且确实也分配了内存,但是内存空间是0,就是说返回给你的指针是不能用的,感觉奇怪吧?既然malloc另外分配内存来维护该内存块(算法链表占用大小),也就是说分配来用于维护该内存块的内存的大小也是有限的,那么到底是多少呢?还有,返回的指针是可用地址的起始地址,可用大小是固定的,在VC6下是56字节,这个大小可能就是链表的大小。如果申请一个负数,那么返回的是0,如下图。原创 2024-02-06 17:32:32 · 879 阅读 · 0 评论 -
一文读懂编码(ANSI、GBK、GB2312、UTF-8、GB18030和 UNICODE)
第一二个字节、第三四个字节的起始部分的都是”110″和”10″,正好与UTF8规则里的两字节模板是一致的,于是再次打开记事本 时,记事本就误认为这是一个UTF8编码的文件,让我们把第一个字节的110和第二个字节的10去掉,我们就得到了”00001 101010″,再把各位对齐,补上前导的0,就得到了”0000 0000 0110 1010″,不好意思,这是UNICODE的006A,也就是小写的字母”j”,而之后的两字节用UTF8解码之后是0368,这个字符什么也不是。这样做,也有弊处,尤其体现在网页中。原创 2024-01-31 11:09:14 · 9766 阅读 · 2 评论 -
VS2019 报错“常量中有换行符” 错误原因分析
情况2,在1的情况下读取0x96之后,MSVC期待读入GBK编码的尾字节(0x40-0xFE),但是接下来读取到的0x20不在这个范围内,这不是个合法的GBK字符,所以MSVC把第一个字节0x96强制改为0x3F,即ASCII编码的问号,然后丢弃第二个字节0x20,继续编译,提示一个警告表示编码有问题。情况1,MSVC读取前两个字节0xE4B8,认为这是一个GBK字符"涓",然后读取0x96,这个字节在GBK的首字节范围(0x81-0xFE)之内,所以MSVC认为这是个双字节汉字,后面还有一个字节。原创 2024-01-06 15:04:00 · 3692 阅读 · 0 评论