Russian Qt Forum

Qt => Общие вопросы => Тема начата: levcom от Март 14, 2012, 09:27



Название: Сериализация
Отправлено: levcom от Март 14, 2012, 09:27
Подскажите что не так делаю,

Код:
    qint32 keyValue = 1;
    DBT sdbckey;
    DBT sdbcdata;
    ::memset(&sdbckey, 0, sizeof(DBT));
    ::memset(&sdbcdata, 0, sizeof(DBT));

    QByteArray aKey = QByteArray();
    QBuffer buffer(&aKey);
    buffer.open(QIODevice::WriteOnly);
    QDataStream s(&buffer);
    if (!QMetaType::save(s, meta_id_key, &keyValue))
        qCritical("QMetaType::save failed. is your key registered with the QMetaType?");
    buffer.close();
    sdbckey.size = aKey.size();
    sdbckey.data = ::malloc(aKey.size());
    ::memcpy(sdbckey.data, aKey.data(), aKey.size());



    qint32 v = 1;
    DBT dbckey;
    DBT dbcdata;
    ::memset(&dbckey, 0, sizeof(DBT));
    ::memset(&dbcdata, 0, sizeof(DBT));
    dbckey.data = &v;
    dbckey.size = sizeof(qint32);


Как я понимаю результат должен быть один и тот же в dbckey.data и sdbckey.data.


Название: Re: Сериализация
Отправлено: Nimbus от Март 14, 2012, 13:44
Код
C++ (Qt)
...
sdbckey.data = ::malloc(aKey.size());
...
qint32 v = 1;
dbckey.data = &v;
Да с чего вдруг?