程序完成后卡住

Program stuck after completion

为什么这个基本的 C++ 程序在完成后会卡住,它不会 returns 返回到 TurboC++ 中的代码。但是,它适用于具有 1 个和 3 个字符的单词。它还在 CodeBlocks.

中完美运行
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
#include<string.h>

void main()
{
    clrscr();
    char * name;
    cout<<"Enter your name : ";
    gets(name);
    int len = strlen(name);
    for(int i=0;i<len;i++)
    {
        cout<<name[i]<<" "<<i<<endl;
    }
    getch();
}

如果我将 char* 更改为 char name[20],它将完美运行。谁能解释一下原因。 如果他们在 char * 中有问题,那么为什么 CodeBlocks 可以毫无问题地运行它?

您没有为 name 分配任何内存。

使用不指向您拥有的任何内存的指针的行为是未定义

这就是 char name[20]; 起作用的原因。尽管 gets 是不安全的,因为您无法控制读入的字符数,因此您的字符缓冲区可能会溢出。为什么不使用 std::stringcin 和更新的编译器?