Мне было просто интересно, как будет действовать размещение new, когда ему передается буфер, которого недостаточно для размещения.Но, похоже, все равно это удается.Вот мой код:
#include <stdio.h>
#include <malloc.h>
#include <new>
class MyClass
{
public:
char data;
char data1;
};
int main() {
printf("sizeof MyClass: %lu\n", (unsigned long)sizeof(MyClass));
void *place = malloc(sizeof(MyClass) - 2);
MyClass *ptr = new (place) MyClass();
ptr->data = 10;
ptr->data1 = 20;
printf("%d\n", ptr->data1); //This seems to have work fine, storing the data as always
}
Это ожидаемое поведение?Кто-нибудь, пожалуйста, объясните, как это работает.Благодарю.
PS: я использую 64-битную систему Ubuntu, компилятор g ++.