C++で,文字列の配列を動的に生成するとき


char** a = new char*[3];

for (int i = 0; i < 3; i++) {
char s[256];
cout << "a[" << i << "] = ";
cin >> s;

a[i] = new char[strlen(s) + 1];  //「ここ」
strcpy(a[i], s);         //「ここ」
}

for (int i = 0; i < 3; i++) {
cout << "a[" << i << "] = " << a[i] << '\n';
}
delete[] a;

上のプログラムで「ここ」の部分を
a[i] = s;
と置き換えるのがどうしてダメなのか,どうしても理解できません.
どなたか教えてもらえませんか??