1つの配列ノードだけ左にシフトしようとしている構造体の配列があります。配列の合計サイズは巨大(約3ギガバイト)なので、必要な配列の正確なサイズはわかっていても、スタックで宣言するには大きすぎます(16ギガのRAMがあり、64ビットを書き込んでいる場合でも)プログラム)、したがって、動的メモリ割り当てを強制することによって物事を複雑にします:
struct s_ptx
{
short streamIndex;
double raw;
char rawDx;
} *Ptx[100];
void allocateMemory(void)
{
ptxTotal = 300;
for (int i = 0; i < 100; ++i)
Ptx[i] = (struct s_ptx*) calloc( ptxTotal, sizeof(struct s_ptx));
}
void shiftDataStructures(void)
{
for (int j = 100 - 1; j > 0; --j)
Ptx[j] = Ptx[j - 1];
}
しかし、shiftDataStructures関数が機能していないため、間違った結果が得られます。これをどのように書き直す必要があるかについてのアイデア。