如何用C写出精确的1MB数组?

时间:2016-11-03 16:15:57

标签: c malloc mpi

我想初始化一个大小为1MB的数组。所以我的目标是最终将1MB写入文件。 我很好奇每次使用这个配方时它都会少于1mb。

int len = (1048576)/sizeof(int);
data = (int *) malloc(len);

什么是正确的方法? 谢谢

编辑 - 根据评论,我更改了代码。

#include <stdio.h>
#include <stdlib.h>
#include <mpi.h>
#include <string.h>

int main(int argc, char *argv[]) {
    int *data;
    int bytes = (1024*1024);
    data = (int *) malloc(bytes);
    for(int i=0;i<bytes;i++){
     data[i] = (int)rand();
     printf("%d",data[i]);
    }
    return 0;

}

编译之后我尝试转储下面的数据

 mpicc -o a mpiFileSize.c

 ./a > dump.dat

现在我看到dump.dat的文件大小。为什么它的2.5MB? File Size in Mac

1 个答案:

答案 0 :(得分:2)

试试这个

#include <stdio.h>
#include <stdlib.h>
#include <mpi.h>
#include <string.h>

int main(int argc, char *argv[]) {
char *data;
int bytes = (1024*1024);
data = (char *) malloc(bytes);
for(int i=0;i<bytes;i++){
 data[i] = (char) rand();
 printf("%c",data[i]);
}
return 0;

}

你应该使用字符而不是整数。