Указатель в std :: map теряет ссылку после возвращения из функции - PullRequest
0 голосов
/ 28 сентября 2019

Я возвращаю структуру из функции, которая содержит std :: map внутри нее, однако при доступе к указателю из возвращаемых данных, в то время как их адрес точно такой же, их данные не совпадают.

Я попытался проверить, является ли их адрес тем же, что и есть, и я также попытался дважды проверить, совпадают ли их данные, чего явно нет.

Структура, о которой идет речь:

struct exec_ret {
    json json_data;
    std::map<std::string, const void*> blob_ptrs;
};

Я вставляю указатель следующим образом:

exec_ret data;
...
std::string column_name = sqlite3_column_name(query, i);
const void* blob_data = sqlite3_column_blob(query, i);
...
data.blob_ptrs.insert(std::make_pair(column_name, blob_data));
return data;

И я получаю к нему доступ следующим образом:

const void* blob_data = data.blob_ptrs["data"]; //"data" is the column name

Ожидаемый результат: указатель хранится в порядке.

Фактический результат: данные указателя теряются.

...