这是C中的双重免费吗?

bia*_*jee 4 c free

通常情况下,如果一个指针被释放两次,它就是一个双重释放.例如,

char *ptr;
ptr=malloc(5 * sizeof(*ptr));
free(ptr);
free(ptr);
Run Code Online (Sandbox Code Playgroud)

以上代码被视为双重免费.以下是否也被视为双重免费?

char *ptr;
char *ptr1;
ptr=malloc(5 * sizeof(*ptr));
ptr1=ptr;
free(ptr);
free(ptr1);
Run Code Online (Sandbox Code Playgroud)

谢谢.

Tho*_*ith 10

是.你释放了两次相同的内存.


Jam*_*ran 10

是.该库并不关心您在源代码中提供了什么名称(在代码执行时它早已消失).重要的是价值,在这种情况下,传递给的值free()将是相同的.