c - 将 C 结构数组移位 1

标签 c data-structures struct shift

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

最佳答案

您没有移动结构,只是移动指针。我想知道您真正认为自己在这里取得了什么成就?

另外,为什么你需要移动数组索引,为什么不使用链表或环形缓冲区。至于错误本身是什么,我不知道,因为你提供的数据不足;您的循环正在以正确的方向运行,不会覆盖指针。

关于c - 将 C 结构数组移位 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7951433/

相关文章:

c - 链表和函数

javascript - 逃逸分析

c - 是否可以验证 IMEI 号码?

C# 使用 base 中的链表数据结构

algorithm - 二叉搜索树中序遍历算法的时间分析

python - 如何将树形元组转换为矩阵形元组?

java - 如何让 JNI 在调用 native 函数时重新加载共享库?

c - 一些带有 'extern' 指针的神秘主义者,指向 C 中的结构

c - 使用 malloc 的多个数组

C# - 调用具有所有默认参数的结构构造函数