Estee Lauder官网最近的deal# Fashion - 美丽时尚
s*A
1 楼
我的理解是
1. new 开辟出来的内存必须由delete来回收
但是所delete的指针变量并不一定是new时所使用的指针变量,只要是指相同一个内存
地址的指针变量就可以
比如 int *a=new int;
a=100;
int * b=a;
delete b;
这样就不会造成内存泄露了,并不一定要delete a;对吗?
2.在用new开辟数组所需内存的时候,编译器是不是还要记住指针变量所对应的开辟内
存大小
比如 int *a=new int[100];
... ...
delete [] a;
这里a存放的只是一个内存地址,但是应该有某种机制记住了a之后是一片大小为100的
内存区域,否则就没办法用delete语句收回这些内存了吧
但是在这种情况下,是否就只能通过delete [] a来释放了?不能像 1 中的情况那样用
别的指针变量释放这片内存了?
谢谢!
1. new 开辟出来的内存必须由delete来回收
但是所delete的指针变量并不一定是new时所使用的指针变量,只要是指相同一个内存
地址的指针变量就可以
比如 int *a=new int;
a=100;
int * b=a;
delete b;
这样就不会造成内存泄露了,并不一定要delete a;对吗?
2.在用new开辟数组所需内存的时候,编译器是不是还要记住指针变量所对应的开辟内
存大小
比如 int *a=new int[100];
... ...
delete [] a;
这里a存放的只是一个内存地址,但是应该有某种机制记住了a之后是一片大小为100的
内存区域,否则就没办法用delete语句收回这些内存了吧
但是在这种情况下,是否就只能通过delete [] a来释放了?不能像 1 中的情况那样用
别的指针变量释放这片内存了?
谢谢!