本文介绍了malloc无法正常运行的动态内存分配。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#include<stdio.h>
#include<io.h>


void main()
{
    FILE *in;
    in = fopen("A.txt","r");
    double f;
    int i,j;
    n = 430;

    double **arr;
    arr = (double**)malloc(sizeof(double*)*430);
    for(i=0;i< 430; i++)
        arr[i] = (double*)malloc(sizeof(double)*430);

    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            fscanf(in, "%lf",&f);
            fprintf(stdout, "%.15lf",f);

            arr[i][j] = f;
            printf("A[%d][%d] = : %f",i,j,f);
        }
        getch();
    }

    cout<<endl<<" Matrix A Fed ";
    getch();

    fclose(in);
}





我的尝试:



输入是一个包含430x430双重类型值的矩阵。

输出迭代直到i = 17并停止。

为什么会这样?

请帮助。

这是由于此处提出的更大问题引起的。

[]

推荐答案

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

int main()
{
    FILE *in;
    in = fopen("A.txt","r");
    double f;
    int i,j;
    const int n = 430;

    double **arr;
    arr = (double**)malloc(sizeof(double*)*430);
    for(i=0;i< 430; i++)
        arr[i] = (double*)malloc(sizeof(double)*430);

    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            fscanf(in, "%lf",&f);
            fprintf(stdout, "%.15lf",f);

            arr[i][j] = f;
            printf("A[%d][%d] = : %f",i,j,f);
        }
    }

    printf(" MAtrix A Fed \n");

    getchar();

    fclose(in);
}





然后我用以下程序生成的随机数喂它





then I fed it with the random numbers generated by the following program

 #include <stdio.h>
 #include <stdlib.h>
const int N = 430;

int main()
{
  int i,j;
  for (i=0; i<N; ++i)
    for(j=0; j<N; ++j)
    {
      if (j %10)
        printf(" ");
      else
        printf("\n ");

      float f = ((float)rand()/RAND_MAX);
      printf("%12g ", f);

    }
  return 0;
}







并最终获得 Matrix A Fed message。


这篇关于malloc无法正常运行的动态内存分配。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-21 20:30