[英]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.