2
我正在用mkl_malloc
和64
對齊分配一個數組,我需要複製它。但我不明白如何調整作品。 mkl_malloc
是否僅在最後添加填充以便數組的總大小是64字節的倍數?或者還會有數組元素之間的填充?memcpy會正確地複製一個分配給mkl_malloc的數組嗎?
將代碼如下例所示將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;
}
*還是會有數組元素之間的填充?* - 想想,它怎麼能做到這一點?它返回給你一個指向'void'的指針,它沒有任何「元素」的概念。它對齊數組的* start *,最後不需要填充。 –
@EugeneSh。 ..即使存在,C標準明確定義了*數組元素之間不會出現填充*。 – alk
@EugeneSh。謝謝,你能把它作爲答案嗎? – devil0150