cin和getchar在C++程序的使用问题

读取一组字符,程序如下
int num = 0;
char *a;
a = new char[num+1];
char c;

cout<<"请输入元素值: "< while((c = getchar()) != '\n')
{
num++;
}
for(int i = 0; i {
cin>>*(a+i);
}
运行完上面的while后下面的for循环cin好像就读不到数据了,死循环出不来,把while注释起来就不能输入数据了,直接跳到for循环我做的断点那里,这个怎么解决?

指针a只分配了一个字符的内存,就算后面把num++也不会增加内存的。
为什么不用cin.getline()呢?

for循环没有贴出完整代码,

还有a只是一个字节,++ 操作之后非法访问了