我有一个结构数组,我试图将它们左移 1 个数组节点。数组的总大小很大(大约 3 GB),所以即使我知道我需要的数组的确切大小,它也太大而无法在堆栈上声明(即使我有 16 gig 的 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 函数不起作用。关于我需要如何重写它的任何想法。