所以我正在尝试学习C++(以及一点C(,并想知道是否有一种真正合适的方法来释放指向结构的指针。下面有一个我正在谈论的例子。
#include <iostream>
struct guy {
int the_data;
};
int main() {
guy the_guy, *ptr;
ptr = &the_guy;
ptr->the_data = 3;
ptr = NULL;
free(ptr);
std::cout << "whaddup guy's data: " << the_guy.the_data <<std::endl;
}
我很好奇,因为我看到的答案是,在释放指针后,需要将其设置为NULL
?这不可能是正确的,因为每当我尝试时,我都会在编译时出错。
想法?
guy the_guy
这里是一个局部变量,其生存期由其作用域定义!局部变量的空闲内存只是Undefined Behavior,幸运的是它崩溃了。
free
只能在由malloc
(或calloc
或realloc
(分配的存储器上使用。在所有其他情况下,它将导致未定义的行为,所以不要这样做。