【问题标题】:memmove implementationmemmove 实现
【发布时间】:2011-02-19 23:51:27
【问题描述】:

参考线程:memmove implementation in C,我不明白为什么 2 个不同的变量会有内存重叠?即编译器将相同的“公共空间”分配给 2 个不同的变量是正常情况吗?为什么编译器在这种情况下使用此策略?

【问题讨论】:

    标签: c memmove


    【解决方案1】:

    与编译器无关。考虑以下几点:

    int x[100];
    
    memmove(&x[1], &x[0], 99*sizeof(int));
    

    【讨论】:

      【解决方案2】:

      这并不是关于编译器创建重叠的变量。只是memmove 的规范说它必须工作,即使源和目标重叠。如果两者没有重叠的机会,您通常希望使用memcpy,这通常会更快,但如果它们重叠,则会给出未定义的行为。

      【讨论】:

        猜你喜欢
        • 2013-11-05
        • 2011-04-04
        • 2021-01-20
        • 2021-03-03
        • 2021-09-26
        • 2012-10-31
        • 2018-09-02
        • 2019-11-10
        • 2021-04-24
        相关资源
        最近更新 更多