Я сделал этот минимальный рабочий пример более крупного кода, который у меня есть.Неправильный байтаз после вызова метода
Проблема заключается в том, что sizeof отпечатков для первого вызова 16, который является правильным размером, и для 2-го вызова только 8. Самое странное, оно всегда печатает 8, независимо от размера структуры, независимо от того, в нем есть только одно значение или 10 значений.
struct test_struct
{
int32_t val1;
int32_t val2;
int32_t val3;
int32_t val4;
};
unsigned char * StructToChar(test_struct structy)
{
unsigned char returnval[sizeof(structy)];
memcpy(returnval, &structy, sizeof(structy));
return returnval;
}
int main()
{
test_struct sendstruct = {};
unsigned char *test_array = StructToChar(sendstruct);
unsigned char returnval[sizeof(sendstruct)];
memcpy(returnval, &sendstruct, sizeof(sendstruct));
printf("%d\n", sizeof(returnval));
printf("%d\n", sizeof(test_array));
return 0;
}
Вы не должны возвращать указатель локальной переменной. – Jarod42
Похоже, C. C не C++ не C. Выберите ** один ** язык. И C не поддерживает _methods_, а только _функции_. – Olaf