C++:正确释放指向结构的指针



所以我正在尝试学习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(或callocrealloc(分配的存储器上使用。在所有其他情况下,它将导致未定义的行为,所以不要这样做。

相关内容

  • 没有找到相关文章

最新更新