动态内存分配(Dynamic memory allocation)

下面的代码片段的输出是什么?为什么?

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

或者:

如果求ptr的strlen值和sizeof值,该代码的输出是“Got a null pointer”。
答案:Got a valid pointer。

posted @ 2017-02-05 22:19  我有一壶酒  阅读(607)  评论(0编辑  收藏  举报