请问:关于char型指针(调试时没错,运行时出错)

请教:关于char型指针(调试时没错,运行时出错)
下面几行代码,调试时没错,点运行时就直接崩了,请教下原因:

void TestMem()
{
char* val[10]={};
for (int i=0; i<10; ++i)
{
val[i] = new char(100);
memcpy(val[i], "Hello", 10);
}
}
------解决方案--------------------
val[i] = new char(100);
论圆括号和方括号的区别
------解决方案--------------------
val[i] = new char(100);

只是分配了一个字符的空间,并初始化为‘100’
------解决方案--------------------
分析:

char* val[10]={};
//val是有10个元素的数组,每个元素都指向字符串;
val[i] = new char(100);
//把100转换成ascii码字符,也就是‘d’,再把100当成地址,赋值给某个字符串指针
//该操作无理
//地址100,32位系统里是0x00000064,不属于用户可操作部分