因为项目需要所以向几位腾讯的Cpp大佬请教了一下!
同时我也整理总结了C++内存管理的几种情况:C++ 内存管理-- new, delete,new[],placement new 总结
placement new允许我们将object创建与 已经申请好的内存中,但是没有所谓的 placenment delete。
这句话的意识:
就是你可以用已经申请的内存来申请对象,但是不建议delete,比如你有一个class a,然后我做一个应用池,里面申请了50个class a大小的内存p,每次我想生成一个新的对象就可以从应用池里面直接生成
!(就是你拿这片内存来管理对象)
placement new怎么样判断有没有数据?这样安全?不会吧有数据的内存块覆盖?
为了确保不知道在什么地方调用了出问题,这个要靠自己维护,一般这个就是自己用来做应用池的时候用到。
又为什么不能delet?不然要怎么样释放?
可以delete,只是为了防止小白乱delete,就是说要封装,不要随便delete,不让一边还在用,另一边就delete了
比如,你想先动态申请100个对象的连续空间,而你事先没有100个对象,那么,你可以先申请空间,然后有新对象的时候,用placement new在已经申请的内存空间上构造。
结合底下的 :应用池来理解placement new