我做了一个较大的代码片段的最小工作示例。方法调用后的字节大小不正确
问题是,第一次调用16的sizeof打印的大小是正确的,第二次只打印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. Pick **一个**语言。而C不支持_methods_,但只支持_functions_。 – Olaf