下面的代码片段的输出是什么?为什么?
解析:这是一道动态内存分配(Dynamic memory allocation)题。
尽管不像非嵌入式计算那么常见,嵌入式系统还是有从堆(heap)中动态分配内存的过程。面试官期望应试者能解决内存碎片、碎片收集、变量的执行时间等问题。这是一个有趣的问题。故意把0值传给了函数malloc,得到了一个合法的指针,这就是上面的代码,该代码的输出是“Got a valid pointer”。我用这个来讨论这样的一道面试例题,看看被面试者是否能想到库例程这样做是正确的。得到正确的答案固然重要,但解决问题的方法和你做决定的基本原理更重要。将程序修改成:或者:
如果求ptr的strlen值和sizeof值,该代码的输出是“Got a null pointer”。
答案:Got a valid pointer。