为什么下面的例子不正确?为什么它不能展示一个悬空指针?我的老师说它并没有展示悬空指针。提前感谢!
int X = 32;
int *p = &X;
free(p);
*p = 32; //<------Shouldn't this line cause dangling pointer ???
同样的问题也出现在这里。为什么下面的示例没有展示出内存泄漏?
void function(int x){
int *p = &x;
*p = 32;
//shouln't this code show a warning as p was not freed?
}
free()
的手册页。 - Sourav Ghoshfree(p);
是错误的,因为 'p' 没有通过调用malloc()
、calloc()
或realloc()
来设置。 - user3629249valgrind
将引发错误。但是,获取某个东西的地址并不分配内存。建议与您的讲师交谈,以了解有关分配/释放内存和堆栈上的值的澄清。 - user3629249