Настройки адаптера экземпляра AWS Windows EC2 & mdash; Добавить эти?

См., когда вы выгружаете структуру в двоичный файл, ее изображение в памяти записывается на диск, например:

class X
{
public:
    int i;
    int j;
};

. , .

X lX;
lX.i= 10;
lX.j = 20;

объект класса lX при записи в двоичный файл будет выглядеть примерно так: | 10 | 20 | i.e, когда вы его прочитаете, он будет работать нормально.

, но для класса, который содержит любой указатель, такой как строка.

class Y
{
public:
    int* pi;
    int j;
};

. , .

Y lY;
lY.pi= new int(10); // lets assume this is created at memory location 1001
lY.j = 20;

, поэтому объект lY будет иметь значение pi как 1001 (не 10, так как это указатель). теперь, когда вы пишете lY в двоичном файле, это будет выглядеть как | 10001 | 20 | и когда вы его прочитаете, он построит новый объект Y (скажем, lY2), имеющий значения pi, равные 1001, а j - 20. Теперь мы указываем на то, что pi (которое является указателем)? ответ - мусор, это то, что вы смотрите на экране. Я думаю, вы используете Windows для запуска этого, так как Linux дал бы вам ошибку сегментации.

0
задан Devin 5 March 2019 в 17:15
поделиться