malloc(0)-malloc 0 字节
C17中有如下描述:
7.22.3 Memory management functions
1 The order and contiguity of storage allocated by successive calls to the aligned_alloc, calloc,
malloc, and realloc functions is unspecified. The pointer returned if the allocation succeeds is
suitably aligned so that it may be assigned to a pointer to any type of object with a fundamental
alignment requirement and then used to access such an object or an array of such objects in the space?allocated (until the space is explicitly deallocated). The lifetime of an allocated object extends from?the allocation until the deallocation. Each such allocation shall yield a pointer to an object disjoint?from any other object. The pointer returned points to the start (lowest byte address) of the allocated?space. If the space cannot be allocated, a null pointer is returned. If the size of the space requested is?zero, the behavior is implementation-defined: either a null pointer is returned to indicate an error,?or the behavior is as if the size were some nonzero value, except that the returned pointer shall not?be used to access an object.
可見c17中,mallo(0)的行為依賴于各自的實現(xiàn),可以返回空指針,也可以返回非空指針。
我用gcc 9.3.0驗證,malloc(0) 返回的是非空指針。
總結
以上是生活随笔為你收集整理的malloc(0)-malloc 0 字节的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 诈骗多少钱啊?
- 下一篇: C面向对象之透明指针的运用