首页 文章

使用malloc的MPI动态数组

提问于
浏览
1

使用malloc和calloc创建动态数组时遇到问题 .

int main() {
      float *xd_real_send;
      int Nooflines_Real;
      int *X;
      float test[500];

      Nooflines_Real = count_lines(infile);
      printf("Nooflines_Real: %d\n", Nooflines_Real);

      X = (int *) malloc(Nooflines_Real*sizeof(int));
      xd_real_send = (float *) calloc (Nooflines_Real,sizeof(float));

      printf("size of X %d, test %d and size of xd_real_send %d\n",
      sizeof(X)/sizeof(int),sizeof(test)/sizeof(float),
      sizeof(xd_real_send)/sizeof(float));fflush(stdout);

    }

输出是

Nooflines_Real: 40
    size of X 2, test 500 and size of xd_real_send 2

你能告诉我我做错了什么吗?

1 回答

  • 1

    Xxd_real_send 被定义为指针 .

    应用的 sizeof 运算符返回指针使用的内存量,而不是指针引用的内存大小 .

    一旦动态分配并由某个指针引用,就不可能(以任何可移植的方式)请求内存块的大小 .

    对于动态分配的内存,应用程序需要注意跟踪这些内存块的大小 .


    test 明确定义为数组,因此 sizeof 能够确定数组的大小 .

相关问题