Присвоение указателя указателю в C - PullRequest
0 голосов
/ 02 марта 2020

У меня есть структура данных, которая хранит необходимые мне данные. Мне нужно получить указатель на память поля структуры данных.

OAL_ErrorCode read_lwm2m_resource_str(lwm2m_context_t * lwm2mH,
                                      lwm2m_uri_t uri,
                                      char* dataToReturn)
{
lwm2m_data_t dataArray = {.id = uri.resourceId};
lwm2m_data_t* dataArrayPtr = &dataArray;
OAL_ErrorCode res;

res = _get_lwm2m_data_array(lwm2mH, uri, dataArrayPtr);
if (res != NO_ERROR)
{
    return res;
}

dataToReturn = (char*)dataArrayPtr->value.asBuffer.buffer;

return NO_ERROR;
}

char* strBuf;
result = read_lwm2m_resource_str(lwm2mH, uri, strBuf);

Когда я запускаю программу в режиме отладки и ставлю точку останова на возврате NO_ERROR внутри read_lwm2m_resource_str (), dataToReturn указывает на правильное содержимое, однако после того, как read_lwm2m_resource_str () завершено, strBuf имеет tra sh внутри и указывает на другое место в памяти. Что не так и как заставить это работать?


Ps lwm2m_data_t

struct _lwm2m_data_t
{
lwm2m_data_type_t type;
uint16_t    id;
union
{
    bool        asBoolean;
    int64_t     asInteger;
    uint64_t    asUnsigned;
    double      asFloat;
    struct
    {
        size_t    length;
        uint8_t * buffer;
    } asBuffer;
    struct
    {
        size_t         count;
        lwm2m_data_t * array;
    } asChildren;
    struct
    {
        uint16_t objectId;
        uint16_t objectInstanceId;
    } asObjLink;
} value;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...