Nevím jak jinde, ale ve starém Borlandu char xxx[] znamená prvek nulové délky (užitečné např. ve struktuře pro zjištění adresy (s použitelným typem), když chci kašlat na union pro rychlou kopii bitových polí). Tedy soudím, že new char[]; vrátí unikátní ukazatel (pokaždé jiný, nový, nutný dealokovat), ale u kterého není zaručeno žádné místo pro data.