[問題] Memory宣告問題

看板C_and_CPP作者 (一發不可收拾)時間12年前 (2012/03/11 00:29), 編輯推噓1(105)
留言6則, 4人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 6.0 之前有上來發文有關於動態記憶的問題,謝謝很多強者大大熱心的教學<(_ _)> ******************************************************************** 我試著用一種先開出一塊空間,再用指標去指到要的地方... 附上程式碼比較快... #include <cstdio> #include <cstdlib> #define LOOK #define n 3 #define k 2 typedef unsigned U32; typedef unsigned char U8; typedef struct { U32 state : 31; U32 bit : 1; }TBB; TBB ***branch_level; TBB *branch_space; U32 *f_branch; U32 *branch_num; //1<<f_branch U32 *state_dim; U32 *state_way; //1<<state_dim U32 *branch_way; //branch_num*state_num void main() { U8 i, j, u, s, m, mm; /***memory space***/ f_branch = new U32 [n]; //[0,1,2] branch_num = new U32 [n]; //[1,2.4] state_dim = new U32 [n]; //[0,1,2] state_way= new U32 [n]; //[1,2.4] branch_way= new U32 [n]; //[2,4,8] s=u=0; for(i=0; i<n; ++i) { f_branch[i]=i; branch_num[i]=1<<i; state_dim; state_way[i]=1<<i; s+=state_way[i]; u+=branch_way[i]; } branch_level = new TBB ** [s]; branch_space = new TBB [u]; branch_level[0] = (TBB **) branch_space; for (i = 0, m = 1; m < n; ++i, ++m) { branch_level[m] = branch_level[i] + branch_way[i]; for(j=0, mm=1; mm < state_way[i]; ++j, ++mm) { branch_level[i][mm] = branch_level[i][j] + \ branch_num[i]; } } #ifdef LOOK for(i=0; i<n; ++i) { for(j=0; j<state_way[i]; ++j) { for(m=0; m<branch_num[i]; ++m) { printf("branch_level[%u][%u][%u].bit=\ %u\n",i,j,m,branch_level[i][j][m].bit); printf("branch_level[%u][%u][%u].state=\ %u\n",i,j,m,branch_level[i][j][m].state); } } } #endif /****************/ system("pause"); } 這宣告memory空間我也沒用過,照理說這邏輯應該是沒有錯 但跑完結果是說記憶體存取access有出錯... 請強者們給予我指教 謝謝... 感激不盡!!!! code方便複製貼上:http://ideone.com/F2hOv -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.169.172.14

03/11 00:34, , 1F
這種問題我會建議自己用單步執行去慢慢找
03/11 00:34, 1F

03/11 01:56, , 2F
陣列沒初始值, 加起來也不知道會是什麼東西
03/11 01:56, 2F

03/11 07:52, , 3F
gdb跑下去就知道掛在哪了
03/11 07:52, 3F

03/12 00:22, , 4F
不好意思 請問gdb是...??
03/12 00:22, 4F

03/12 00:54, , 6F
我會建議你研究一下VC6的單步執行怎麼用
03/12 00:54, 6F
文章代碼(AID): #1FMu5YyE (C_and_CPP)