プログラムを実行していて、途中で止まってしまいます
変な止まりかただったので、タスクマネージャーを起動して調べると、
起動してからのパフォーマンスにおけるメモリ使用量があっという間に 750MBから1.95GBへ(約2分間)
コードは下に書きますが、自作関数、自作マクロがたくさんありまして、
そのまま載せても意味不明ですから、構造のみを書きます
#include "mine.h"
#include <stdio.h>
void funcX( int *A );
void funcY( int *A, int *B );
void funcZ( int *B, int *C, int *D, int *E );
void handle_array( void )
{
int A [6000];
int B [6000];
int C [6000];
int D [6000];
int E [6000];
int td, shif;
for( td = -24; td <= 24; td ++ )
{
printf( "td = %d\n", td );
if( td >= 0 )
{
for( shif = 0; shif <= 24 - td; shif ++ )
{
funcX( A );
funcY( A, B );
funcZ( B, C, D, E );
}
}
else // td < 0.
{
for( shif = -td; shif <= 24; shif ++ )
{
funcX( A );
funcY( A, B );
funcZ( B, C, D, E );
}
}
}
}
void funcX( int *A )
{
// A を定義
}
void funcY( int *A, int *B )
{
// A をベースに、B を作成
}
void funcZ( int *B, int *C, int *D, int *E )
{
// B をベースに、C, D, E を作成
}
調べたところ、配列を引数として渡すとき、実引数のコピーオブジェが作成されて...
それが膨大なスタックを消費して...
などとありました
しかし、sizeof( int ) = 4 byte で * 6000 = 24,000 byte で = 24 KB...
たとえコピーオブジェが作成されたとしても、なんら問題がないとは思うのですが。
[6000]程度の配列を引数として渡すことは問題なのでしょうか?
よろしくお願いします