{"action":"created","issue":{"url":"https://api.github.com/repos/alexanderBaranov/OOP/issues/18","repository_url":"https://api.github.com/repos/alexanderBaranov/OOP","labels_url":"https://api.github.com/repos/alexanderBaranov/OOP/issues/18/labels{/name}","comments_url":"https://api.github.com/repos/alexanderBaranov/OOP/issues/18/comments","events_url":"https://api.github.com/repos/alexanderBaranov/OOP/issues/18/events","html_url":"https://github.com/alexanderBaranov/OOP/issues/18","id":144830071,"number":18,"title":"Замечания по CMyString","user":{"login":"alexey-malov","id":6040682,"avatar_url":"https://avatars.githubusercontent.com/u/6040682?v=3","gravatar_id":"","url":"https://api.github.com/users/alexey-malov","html_url":"https://github.com/alexey-malov","followers_url":"https://api.github.com/users/alexey-malov/followers","following_url":"https://api.github.com/users/alexey-malov/following{/other_user}","gists_url":"https://api.github.com/users/alexey-malov/gists{/gist_id}","starred_url":"https://api.github.com/users/alexey-malov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alexey-malov/subscriptions","organizations_url":"https://api.github.com/users/alexey-malov/orgs","repos_url":"https://api.github.com/users/alexey-malov/repos","events_url":"https://api.github.com/users/alexey-malov/events{/privacy}","received_events_url":"https://api.github.com/users/alexey-malov/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":22,"created_at":"2016-03-31T08:49:27Z","updated_at":"2016-04-05T06:58:50Z","closed_at":null,"body":"```c++\r\nCMyString::CMyString() throw()\r\n{\r\n\tm_size = 0;\r\n\tm_chars = make_unique<char[]>('\\0');\r\n}\r\n```\r\nданный конструктор может выбросить исключение (потому как make_unique использует new). если функция, помечена как noexcept или throw() выбросит исключение вызовется terminate\r\n\r\n`make_unique<char[]>('\\0');` выделяет блок размером 0 байт (+служебные данные) в куче и возвращает ненулевой указатель. Фактически разыменовывать этот указатель нельзя. Если вызвать GetStringData() и передать его хоть в printf, то будет неопределенное поведение из-за разыменования этого указателя\r\n\r\nВ любом случае - это невалидное состояние строки"},"comment":{"url":"https://api.github.com/repos/alexanderBaranov/OOP/issues/comments/205684878","html_url":"https://github.com/alexanderBaranov/OOP/issues/18#issuecomment-205684878","issue_url":"https://api.github.com/repos/alexanderBaranov/OOP/issues/18","id":205684878,"user":{"login":"alexey-malov","id":6040682,"avatar_url":"https://avatars.githubusercontent.com/u/6040682?v=3","gravatar_id":"","url":"https://api.github.com/users/alexey-malov","html_url":"https://github.com/alexey-malov","followers_url":"https://api.github.com/users/alexey-malov/followers","following_url":"https://api.github.com/users/alexey-malov/following{/other_user}","gists_url":"https://api.github.com/users/alexey-malov/gists{/gist_id}","starred_url":"https://api.github.com/users/alexey-malov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alexey-malov/subscriptions","organizations_url":"https://api.github.com/users/alexey-malov/orgs","repos_url":"https://api.github.com/users/alexey-malov/repos","events_url":"https://api.github.com/users/alexey-malov/events{/privacy}","received_events_url":"https://api.github.com/users/alexey-malov/received_events","type":"User","site_admin":false},"created_at":"2016-04-05T06:58:50Z","updated_at":"2016-04-05T06:58:50Z","body":"Каждый метод/оператор должен переводить объект из одного валидного состояния в то же самое, либо другое валидное состояние. Из всех точках выхода, включая выход по исключению.\r\n\r\nКаждый используемый методом объект (передаваемый через аргументы метода, или на который у объекта есть ссылка или указатель (агрегация/композиция), либо глобальный объект) должен либо остаться в том же состоянии, либо перейти в новое валидное состояние.\r\n\r\nВалидное состояние - состояние, в котором данные объекта находятся в согласованном состоянии.\r\n\r\nЭто должно проверяться в тестах"}}