【发布时间】:2015-03-29 10:06:47
【问题描述】:
我完全卡在这个问题上...给出的代码结构如下:
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。
【问题讨论】:
-
尽可能使用
std::vector,因为它维护项目的副本并管理动态内存分配,因此您不必这样做。 -
该代码无法编译。
var = new myvar[z]不适用于myvar **var。 -
你试过 (var[i])[j].ptr 吗?
-
刚刚做了,我在尝试访问它时仍然遇到段错误......所以
cout << myvar[i][j].ptr[k].其中 i、j、k 应该在以前用于声明它的数组边界内。 -
所以你现在有什么问题 - 你说'修复了代码问题'
标签: c++ pointers memory dynamic-allocation