У меня есть два блока кода около 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++
без каких-либо аргументов для его компиляции.
Если это ошибка компилятора, должны ли они произойти сбой или нет в соответствии со стандартом?