摘要: char *ptr;if ((ptr = (char *)malloc(0)) == NULL) puts( "Got a null pointer "); else puts( "Got a valid pointer "); 上面程序在VC6.0下输出结果是:Got a valid pointer 请问指针为NULL时指向哪里,分配的空间为0时又指向哪里?当使用malloc后,只有在没有足够内存的情况下会返回NULL,或是出现异常报告。 malloc(0),系统就已经帮你准备好了堆中的使用起始地址(不会为NULL)。但是你不能对该地址进行写操作(不是 阅读全文
posted @ 2013-03-18 20:16 丁洋 阅读(3746) 评论(0) 推荐(0) 编辑
摘要: 嵌入式如果用int关键字才是真正不懂嵌入式,如果想做到软件可以移植,应该将类型给定义清晰,如 typedef unsigned char INT8U; typedef signed char INT8S;编码时使用INT8U去定义数据类型。明知道int在不同的机器上可能有不同的字长,还使用int,自找苦吃。unsigned int compzero = 0xFFFF;意图是想让compzero 全是二进制1,但是 0xFFFF是代表程序员认为int 是2个字节的,在两个字节的机器上这样可以要是4字节呢?系统就自动变成相当于unsigned int compzero = 0x0000FFFF;. 阅读全文
posted @ 2013-03-18 20:09 丁洋 阅读(337) 评论(0) 推荐(0) 编辑