У меня есть структура данных, которая хранит необходимые мне данные. Мне нужно получить указатель на память поля структуры данных.
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;
};