为什么我的代码现在只能在代码中停下来?

我的代码一直运行到到达代码的这一部分,然后停止

      int i,y;
      short int** audiodata = (short int **)calloc(nsample*2,sizeof(short int*));
      for( i=0 ; i<nsample ; i++)
      {
        for( y=0 ; y<1 ; y++)   
        {
           audiodata[i][y]= (short int) (32700.0* sin(2*pi*freq*(float)i/44100) );
         }
      }

我没有看到什么错误,在此部分代码之后,我有一条printf语句,该语句让用户知道它已完成2-d数组的加载,但printf从未执行。

shuaikai006 回答:为什么我的代码现在只能在代码中停下来?

问题是您没有分配类型为short int *的指针数组。所以这句话

audiodata[i][y]= (short int) (32700.0* sin(2*pi*freq*(float)i/44100) );
         ^^^^^^

具有不确定的行为。

您的意思是以下

  short int** audiodata = calloc( nsample,sizeof( short int* ) );

  for ( i = 0; i < nsample; i++ )
  {
       audiodata[i] = calloc( 2,sizeof( short int ) );
  }

  for ( i = 0; i < nsample; i++ )
  {
      for ( y = 0; y < 2; y++ )   
      {
          audiodata[i][y]= (short int) (32700.0* sin(2*pi*freq*(float)i/44100) );
      }
  }
本文链接:https://www.f2er.com/3116373.html

大家都在问