memcpy 是否会正确复制分配有 mkl_malloc 的数组?

Will memcpy correctly copy an array allocated with mkl_malloc?

我正在分配一个 mkl_malloc 的数组,64 对齐,我需要复制它。但我不明白对齐是如何工作的。 mkl_malloc 是否只是在末尾添加填充,以便数组的总大小是 64 字节的倍数?还是数组元素之间也会有填充?

像下面的示例这样的代码会将整个 a 复制到 b 中,还是只复制其中的一部分?

#include <stdio.h>
#include <mkl.h>

int main() {
    double *a = mkl_malloc(10 * sizeof(double), 64);

    // is this enough memory to include a?
    double *b = malloc(10 * sizeof(double));

    // will this copy all of a?
    memcpy(b, a, 10 * sizeof(double));

    mkl_free(a);
    free(b);
    return 0;
}

您的示例 memcpy(b, a, 10 * sizeof(double)); 将正常工作。

对齐适用于起始地址,而不适用于保留内存块的大小。