У меня есть два блока кода около new[] и delete[]:
1)
#include <string>
int main()
{
std::string *p = new std::string[0];
delete[] p;
return 0;
}
2) В этом случае я просто изменяю std::string на int
int main()
{
int *p = new int[0];
delete[] p;
return 0;
}
Мой вопрос:
Почему первая программа выходит из строя со следующим сообщением (в среде linux):
Segmentation fault (core dumped)
Но вторая программа работает без ошибок?
ИЗМЕНИТЬ
компилятор: g++ (Ubuntu/Linaro 4.7.2-2ubuntu1) 4.7.2
Я просто использую g++ без каких-либо аргументов для его компиляции.
Если это ошибка компилятора, должны ли они произойти сбой или нет в соответствии со стандартом?