저도 1차원 배열에 대해 delete [] 이런식으로 해야하는지 의문을 가진적이 있어요
char(1) 나 char(100)나 관리되는 방법에 차이가 없을거라 생각했었는데요ㅋ
그치면 "1차원배열에 delete 만해도 된다" 라고 확인된바는 없다보니 정석으로 하고있지요 ㅎ
연속되지 않은 공간에 배열을 할당 할 수도 있다고 하니 delete[] 를 반드시 써야한다고하는 글도 본적은 있습니다.
오래전에 서진택님이 써놓은 자료를 보면 Borland C++은 DOS에서 new로 메모리 할당시
할당한 메모리의 size까지 할당해서 앞에 기록하고 바로뒤의 포인터를 리턴한다고 본적이 있네요
delete operator의 형태야 스칼라형과 벡터형이 문법 차원에서 달라야 한다는 점에 저 역시 이의가 없답니다.
소멸자 함수 호출하는 횟수 때문에 메모리 할당량뿐만 아니라 실제 원소 개수 정보도 필요해져서 저런 차이가 발생한 거지요. 앞부분에다 개수를 따로 저장하는 테크닉 정도는 도스용 Borland C++뿐만 아니라 요즘 컴파일러들도 동일하게 사용합니다.
그에 반해 생성자 소멸자나 가상함수 따위가 없는 built-in type이야 스칼라/벡터 delete 뭘 쓰나 딱히 유의미한 차이가 없긴 합니다. C/C++은 강타입+정적 스코핑이기 때문에 그 정도 타입 판단은 컴파일 타임 때 가능하니까요.