如果类中有一个指针数据成员?
C++无论何种数据,是否要delete关键看其空间是否使用new分配的。
1,函数冲定义的局部变量指针,单纯是一个局部变量是不用delete;
2,C++如果类中有一个指针数据成员,而没有用new,析构函数也是不用delete的;在类或函数中,int*,char*这些只要不是new的,也同样不用释放,系统会自动把他们占的内存释放掉,只有new的才会手动的去delete原理:int*,char*,这些定义是局部变量,存在于栈上,比如int*p;p在栈上,而且p的值也是栈的一个地址。但是当int*p=newint;这时候,p这个变量是在栈上的。但是p的值是一个地址,这个地址是堆上的一个地址。如果不deletep;那么,这个地址会一直被占用着,不能被其他的对象所使用,所以我们用完这个地址,要把这个地址释放掉。因此栈的空间会自动释放,而堆里的空间必须手动释放。
Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有