Многие (жаль, что не все) программисты, которые используют С++, знают, что нельзя память, выделенную malloc`ом освобождать через delete.
Ну не то, чтобы запрещенно было (в стандарте как всегда прописано - undefined behavior)... Ну не то, чтоб не работало - под VS 2005/2008 прекрасно бегал такой кусок кода (жаль, не могу познакомиться с автором). Да вот незадача - при компилировании такой лажи GCC 2.95.2 компилятор выдаёт невнятное сообщение и тихонько замолкает.
Убил полдня на вот такую "да_это_же_все_знают" хрень.
среда, 16 июня 2010 г.
Подписаться на:
Комментарии к сообщению (Atom)
По іронії долі сьогодні вовтузюся з потрійним виділення пам’яті для якогось нещасного тексту:
ОтветитьУдалить1) json_dump() повертає char*, який треба звільнити функцією ::free().
2) Той самий char* має бути всередині відфутболений як std::string.
3) А зовнішня функція має віддати цей самий текст через CORBA::string_dup().
Отака-ось платня за зручності цивілізації.
"GCC 2.95.2 компилятор выдаёт невнятное сообщение" а що за сообщєніє? ну типу щоб ми потім всі зразу знали що воно таке
ОтветитьУдалить"а що за сообщєніє?"
ОтветитьУдалитьglibc detected *** malloc/free/calloc() memory corruption ... в различных вариантах. Возникает при компиляции функций, в которых используется трюк, описанный в посте.