Yulia Asked:2023-09-17 17:46:04 +0000 UTC2023-09-17 17:46:04 +0000 UTC 2023-09-17 17:46:04 +0000 UTC 如何使用 new with 寻址来设置特定地址? 772 C++有一个称为new的寻址操作,可以用来分配特定的内存区域。但是否可以识别具体地址尚不完全清楚。当尝试执行此操作时(请参见下面的行): char *pt = new (0x000000) int(10); 出现错误“operator new:没有重载函数可以转换所有参数类型” 。 如上所示,如何设置特定地址? c++ 1 个回答 Voted Best Answer user22405329 2023-10-09T18:31:31Z2023-10-09T18:31:31Z 这个运算符称为“placement new”,它实际上根本不分配内存!它所做的只是在已经存在的内存上调用构造函数。必须将指向内存的指针而不是数字传递给运算符。 也就是说,如果您使用malloc、mmap或VirtualAlloc类似的东西分配内存,则可以在该内存中创建一个对象。您可以一次分配大量内存,然后在其中创建对象 -std::vector例如,这就是它的工作原理。 该运算符也没有成对的delete- 相反,您只需要调用析构函数:ptr->~Object()。
这个运算符称为“placement new”,它实际上根本不分配内存!它所做的只是在已经存在的内存上调用构造函数。必须将指向内存的指针而不是数字传递给运算符。
也就是说,如果您使用
malloc、mmap或VirtualAlloc类似的东西分配内存,则可以在该内存中创建一个对象。您可以一次分配大量内存,然后在其中创建对象 -std::vector例如,这就是它的工作原理。该运算符也没有成对的
delete- 相反,您只需要调用析构函数:ptr->~Object()。