首页 > 试题广场 >

What’s the runtime beh...

[不定项选择题]
What’s the runtime behavior of below code piece?(单选)
 
int *p = (int *)malloc(sizeof(int));
p = NULL;
free(p);
  • Compiling error: free can't be applied on NULL pointer
  • Memory leak happens
  • Dangling pointer is generated
  • May crash when free() is called with NULL input
好棒
发表于 2021-11-15 12:57:51 回复(3)
个人理解:
int *p = (int *)malloc(sizeof(int)); // p指向申请到的内存
p = NULL; //p指向NULL,之前指向的内存就无法释放了;内存泄漏
free(p);
发表于 2020-09-01 20:33:10 回复(0)
应该先进行free(p),然后P=Null,防止野指针
发表于 2020-12-09 10:37:54 回复(0)
Can you speak Chinese???
发表于 2022-07-17 15:55:50 回复(2)
查资料才发现,free一个空指针是不没有任何事情发生。跟double free一个指针是不一样。原先以为free一块malloc的指针后将指针置为NULL是编码规则要求的,但是现在看是有着实际意义的。free后把指针=null,即使double free也都是安全的。
发表于 2022-01-12 15:50:12 回复(0)
A 编译错误:free不能释放空指针
B 内存泄漏
C 产生悬浮指针。--悬浮指针:指针或引用的指向的对象被释放。
D 释放空指针时可能会代码崩溃
p指向的新开辟的堆区空间未释放,所以内存泄漏
发表于 2023-10-24 20:28:48 回复(1)
如果free一个空指针,是没有任何事情发生的。和double free一个指针是不一样的。所以在申明一个指针的时候,最好赋初值NULL,例如char* str = NULL,后面不小心free了也没有问题发生。
发表于 2021-08-03 21:29:58 回复(0)
答案是发生了内存泄露? 不懂为何?有没有大神赐教。
发表于 2020-08-02 18:41:15 回复(1)
应该先进行free(p),然后P=Null,防止野指针。 第二行,p=null,那么第一行的空间就丢失了,没法释放
发表于 2022-09-13 09:48:34 回复(1)
应该先进行free(p),然后P=Null,防止野指针
发表于 2022-06-28 13:15:49 回复(0)
多选题选B???害我纠结半天
编辑于 2024-03-06 20:14:49 回复(0)
发表于 2023-10-27 21:34:58 回复(0)
man 3 free用法,是这样说的:

"The free() function frees the memory space pointed to by ptr, which must have been returned by a previous call to malloc(), calloc() or realloc().  Otherwise, or if free(ptr) has already been called before, undefined  behavior occurs.  If ptr is NULL, no operation is performed."

发表于 2023-04-26 13:55:39 回复(0)
先free 在赋为NULL 防止野指针
发表于 2022-10-19 12:18:30 回复(0)
A编译错误:free不能应用于空指针
B发生内存泄漏
C生成悬空指针
D使用空输入调用free()时可能会崩溃
发表于 2022-08-01 10:30:36 回复(0)
free函数和delete操作对空指针是安全的。
发表于 2022-04-06 21:02:11 回复(0)
直接valgrind,就可以发现泄露了四个字节。
发表于 2020-12-21 20:18:03 回复(0)
free和p=NULL的顺序反了
发表于 2020-10-26 16:43:13 回复(0)
应该是先free,再等于NULL吧!
发表于 2020-08-12 09:20:43 回复(0)