new 也可以在栈下 不一定要delete
new 也可以在栈上 不一定要deleteC/C++ codeint main(int argc, char* argv[]){int n 10int *p new(&n)
new 也可以在栈上 不一定要delete
C/C++ codeint 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++ codeint n =10; int *p =new(&n) int(100);
[解决办法]
http://www.adintr.com/myarticle/operator.html
[解决办法]
这种用法有危险吧?
[解决办法]
主要是对内存管理有更细致的要求。
[解决办法]
感觉没什么用处,用new动态分配内存就是为了让用户来控制内存的释放,在栈上分配的话用户控制不了,跟直接用局部变量有什么差别?
[解决办法]
不如直接用union?
union
{
short i;
char b[2];
}