c++ - 结构中包含数组的结构数组

标签 c++ pointers memory dynamic-allocation

我完全卡在了这个问题上...给出的代码结构如下:

typedef struct _myvar{
   uint32_t someInt;
   uint32_t *ptr;
} myvar;
...
myvar **var;
..
var = new myvar*[x]; // where x is an int
for(int i = 0; i < y; i++){ // y is usually 2 or 4
   var[i] = new myvar[z]; //create dynamic 2d array
   for(int j = 0; j < z; j++){
      var[i][j].ptr = new int[b]; //where b is another int
   }
}

我想创建一个 2d 结构,其中一部分是 3d,即 ptr 只是一个指向 int 数组的指针。

我的代码可以编译,但我在尝试分配内存时遇到段错误,因此 ptr 可以指向它。我尝试为此工作了大约一个小时,认为是时候寻求帮助了。

谢谢!

EDIT1:修复了关于评论未编译代码的代码问题。其次......我不能像我想的那样使用 vector ......我拥有的数据结构是我必须使用的。

EDIT2:b 是动态的并在命令行设置。出于测试目的,请使用 16。

最佳答案

我认为您对索引感到困惑。在你的第一个循环中你使用了 var[i],所以我必须在 x 处停止,而不是在 y 处。对于我使用 j 和 y 的列。不确定 z 是什么。 然后,正如其他人所指出的,您不应该混合使用 int 和 uint32_t。 试试这个:

#include <iostream>
using namespace std;

typedef struct _myvar{
   uint32_t someInt;
   uint32_t *ptr;
} myvar;

int main() {

    myvar **var;

    int x = 3;
    int y = 4;

    var = new myvar*[x]; // where x is an int
    for(int i = 0; i < x; i++) { // i stops at x
        var[i] = new myvar[y]; //create dynamic 2d array
        for(int j = 0; j < y; j++){
            var[i][j].ptr = new uint32_t[16]; // used 16 for testing
        }
    }


    return 0;
}

关于c++ - 结构中包含数组的结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28227294/

相关文章:

c++ - 无法识别 NSIS 插件功能

c++ - 有没有比添加 0.5f 和截断转换更直接的方法来将 float 转换为 int 并进行舍入?

c - 为什么我没有得到堆栈溢出?

android onTrimMemory 和 ComponentCallbacks2

C++检查变量以解决越界问题

c++ - 枚举信号参数

c++ - 毕达哥拉斯恒等式 : how do I calculate the proper cos sign?

将字符指针转换为字符串指针,删除重复项

c - 将文件读入链表时出现段错误

c - 如何修改指向void函数内部结构的指针