memcpy会正确复制用mkl_malloc分配的数组吗?

时间:2017-07-26 15:40:46

标签: c intel-mkl

我正在分配一个mkl_malloc64对齐的数组,我需要复制它。但我不明白对齐是如何工作的。 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;
}

1 个答案:

答案 0 :(得分:1)

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

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