您的位置:首页 > 编程语言 > C语言/C++

1006_C/C++笔试题_15:16道c语言面试【13/14】

2012-10-06 12:57 393 查看
13.评价下面的代码片段:

unsigned int zero = 0;
unsigned int compzero = 0xFFFF;

对于一个int型不是16位的处理器来说,上面的 代码是不正确的。应编写如下:
unsigned int compzeor = ~0;
这一问题能真正检验应试者是否懂得处理器字长的重要性。在我的经验里,好的嵌入式程序员非常准确的明白硬件的细节和它的局限性,然而PC机程序员往往把硬件作为一个无法避免的烦恼。

14.动态内存分配:尽管不想非嵌入式计算机那么常见,嵌入式系统还是有从堆heap中动态分配内存的过程的,那么在嵌入式系统中动态分配内存可能发生什么问题呢?

这里,我希望应试者能够提到内存碎片,碎片收集的问题,变量的持行时间等等。这个主题已经在ESP杂志中被广泛讨论过了。实例如下:问代码片段输出的是什么?

char *ptr;
if( (ptr=(char*)malloc(0)) == NULL )
puts("got a null pointer!");
else
puts("got a valid pointer!");

输出 got a valid pointer.
PS:这里我不知道原作者所说的什么内存碎片、碎片收集、变量的持行时间到底指什么,也不知道这三个概念和以上5行代码的关系,希望明白的人给讲讲。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息