new 也可以在栈下 不一定要delete
new 也可以在栈上 不一定要delete
这种用法一般用在什么上面呢。。
------解决方案--------------------
首先new函数有多个重载
这里使用的new不单单是可以复用栈上的空间new,对于堆上的空间也可以实施这种方式的new.
通常使用在对于内存空间要求较高,防止内存碎片过多。
------解决方案--------------------
貌似有见过这种说法,自己没用过……
------解决方案--------------------
这个new操作符分配的内存在栈还是堆中主要看你的地址参数属于哪的
这时的new 不是new-delete组合里的new了;
它申请的内存空间不在delete 管辖范围内了
------解决方案--------------------
简单说是指定要在神马地方(&n)申请内存
搜 placement new
------解决方案--------------------
这是placement new的用法。
- C/C++ code
int main(int argc, char* argv[]) { int n =10; int *p =new(&n) int(100); cout<<n; return 0; }
这种用法一般用在什么上面呢。。
------解决方案--------------------
首先new函数有多个重载
这里使用的new不单单是可以复用栈上的空间new,对于堆上的空间也可以实施这种方式的new.
通常使用在对于内存空间要求较高,防止内存碎片过多。
------解决方案--------------------
貌似有见过这种说法,自己没用过……
------解决方案--------------------
这个new操作符分配的内存在栈还是堆中主要看你的地址参数属于哪的
这时的new 不是new-delete组合里的new了;
它申请的内存空间不在delete 管辖范围内了
------解决方案--------------------
简单说是指定要在神马地方(&n)申请内存
搜 placement new
------解决方案--------------------
这是placement new的用法。
- C/C++ code
int n =10; int *p =new(&n) int(100);
------解决方案--------------------
http://www.adintr.com/myarticle/operator.html
------解决方案--------------------
这种用法有危险吧?
------解决方案--------------------
主要是对内存管理有更细致的要求。
------解决方案--------------------
感觉没什么用处,用new动态分配内存就是为了让用户来控制内存的释放,在栈上分配的话用户控制不了,跟直接用局部变量有什么差别?
------解决方案--------------------
不如直接用union?
union
{
short i;
char b[2];
}