#include <iostream>
#include <windows.h>using namespace std;void main()
{
DWORD *t[]; t = new DWORD(12); return;
}这样做有问题吗?

解决方案 »

  1.   

    有问题void main()
    {
    DWORD *t;t = new DWORD[12];
    return;
    }
      

  2.   

    struct sTable //second level table
    {
    CtrlP *CtrlDes[ DesTableMax ];
    BYTE Pointer;
    }; struct fTable
    {
    sTable *scdTable;
    DWORD Pointer;
    DWORD dNumCtrlTableSize;
    }; return ControlDes.scdTable[ ID / ControlDes.dNumCtrlTableSize ]->CtrlDes[ ID % ControlDes.dNumCtrlTableSize - 1 ]->Location;
    如果不用*scdTable[]的话就出错,用了也是错
      

  3.   

    检查数组是否越界?
    检查ControlDes.dNumCtrlTableSize是否为零?
      

  4.   

    每一个
    ControlDes.scdTable[ 0~ ControlDes.dNumCtrlTableSize-1] 对应的CtrlDes都要new一遍,这才能使用
      

  5.   

    能发个demo给我调试下看看嘛?
      

  6.   

    我参考你的定义,这么写的,调用和使用没问题typedef unsigned long DWORD;
    typedef unsigned char BYTE;#define DesTableMax 3
    struct CtrlP{
      int Location;
    };struct sTable //second level table
    {
    CtrlP *CtrlDes[ DesTableMax ];
    BYTE Pointer;
    };struct fTable
    {
    sTable *scdTable;
    DWORD Pointer;
    DWORD dNumCtrlTableSize;
    };
    fTable ControlDes;
    ControlDes.scdTable = new sTable[10];
    for (int i=0; i<10;i++)
    for (int j=0; j<DesTableMax; j++)
    ControlDes.scdTable[i].CtrlDes[j] = new CtrlP; ControlDes.scdTable[ 1 ].CtrlDes[ 1 ]->Location = 10;