Does freeing an uninitialized pointer result in undefined behavior?

前端 未结 4 1329
悲&欢浪女
悲&欢浪女 2021-01-21 09:39

If you have a pointer that is not initialized and, by mistake, try to free it, is this going to result in undefined behavior?

Like:

int main(void){

             


        
4条回答
  •  执念已碎
    2021-01-21 10:36

    Yes, it is undefined behavior.

    The pointer passed to free should be a pointer to a valid object allocated with malloc, calloc, realloc or a null pointer.

    From C99:

    (7.20.3.2p2) "If ptr is a null pointer, no action occurs. Otherwise, if the argument does not match a pointer earlier returned by the calloc, malloc, or realloc function, or if the space has been deallocated by a call to free or realloc, the behavior is undefined."

提交回复
热议问题