[英]Array of structs with Array in the struct
我完全陷入这个问题。给出的代码结构如下:
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只是一个指向整数数组的指针。
我的代码可以编译,但是在尝试分配内存时出现段错误,因此ptr可以指向它。 我尝试了大约一个小时,并认为是时候寻求帮助了。
谢谢!
EDIT1:修复了关于未编译代码的注释问题。其次,我不能像我想的那样使用向量。我所拥有的数据结构是我必须使用的。
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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.