C内存地址访问报错:Access Violation
我用C分配了一段内存区,为什么有的地址能访问,有的就不能访问呢?报错:"Access Violation"
代码如下:
#include <stdio.h>
#include <STDLIB.H>
#include <MEMORY.H>
typedef struct _Node
{
int opc;
int dpc;
int slr;
int session_id;
struct _Node *next;
}NODE;
typedef struct _HASH_TABLE
{
NODE * value[35731]; //这是一个指针数组,每个记录指向一个数据结构。
}HASH_TABLE;
HASH_TABLE * create_hash_table()
{
HASH_TABLE *pHashTbl = (HASH_TABLE*)malloc(sizeof(HASH_TABLE)); //分配一段内存区,并指向一个HASH TABLE数据结构。
memset(pHashTbl,0,sizeof(HASH_TABLE)); //将所有地址置"0"
NODE* pNode;
pNode = pHashTbl->value[123]; //这条语句执行成功。
pNode = pHashTbl->value[12323]; //执行到这条指令报错:Access Violation
return pHashTbl;
}
int main()
{
HASH_TABLE *pHashTbl = create_hash_table();
return 0;
}