[問題] Memory宣告問題
開發平台(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
03/11 07:52, 3F
→
03/12 00:22, , 4F
03/12 00:22, 4F
→
03/12 00:53, , 5F
03/12 00:53, 5F
→
03/12 00:54, , 6F
03/12 00:54, 6F