当前位置:  开发笔记 > 编程语言 > 正文

方法调用后字节大小不正确

如何解决《方法调用后字节大小不正确》经验,为你挑选了1个好方法。

我制作了一个最小的工作示例,我有一大段代码.

问题是,sizeof打印第一次调用16,这是正确的大小,而第二次调用只打印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.. 5

sizeof(test_array)sizeof(unsigned char *)如此大小的指针.



1> Jarod42..:

sizeof(test_array)sizeof(unsigned char *)如此大小的指针.


不过,在你的回答中更不用说UB了
推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有