在64环境下编程遇到的一个有关问题

在64环境下编程遇到的一个问题,求助
C/C++ code

#include <iostream> 
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    int* num = new int[5];
    num[0] = 1;
    num[1] = 2;
    num[2] = 3;
    num[3] = 4;
    num[4] = 5;    
    int**pNum = (int**)num;
    int j =0;
    while( j< 5 )
    {
        printf("%d\n",pNum[0]+j);
        j++;
    }
        return 0;
}


在x64环境下为啥得不到预期的1 2 3 4 5输出呢?
求高手指点

------解决方案--------------------
今天看了一篇“HarbinZJU”的文章,终于明白了楼主的代码问题出在哪里;
int类型在x64和x86系统下的长度都是32位(4字节),但是pointer(指针)的长度在x86系统下是32位(4字节),在x64系统下是64位(8字节),问题出现在“int**pNum = (int**)num
”这一句代码,强制转换了从int到指针;
其实只需要将num的地址传递给*pNum就可以解决,改为“int**pNum = &num;