LINUX.ORG.RU
ФорумTalks

освобождение памяти

 


0

5

освобождаю массивы структур таким образом, появляется double free or corruption

struct list *d;
struct list *pt;
for ( int h = 0; h < height; h++ )
{
  for ( int w = 0; w < width; w++ )
  {
     pt = &total_list [ h ] [ w ];
     while ( pt )
     {
        d = pt;
        pt = pt->next;
        free ( d );
     }
  }
}

Перемещено tailgunner из development

Ответ на: комментарий от u0atgKIRznY5

K&R читал, да и зачем ты советуешь это мне?

Что-то не заметно. Перечиитай.

для c++ читаю элджера.

Выкинь каку. Ты специально что ли эту дичь выбрал? Чтобы НЕ научиться плюсам? Лучше страуструпа и cppreference.com ничего еще не придумали. Можно конечно Майерса и Александреску еще посмотреть, но тебе рано.

Какие советы?

Читать умные книжки.

Ты допускаешь? Ты как вообще мой уровень развития представляешь? Что я не могу осилить то что ты выдумал? Ты даже не сказал что именно, а уже про развитие пишешь.

Что ты несешь? Что я выдумал? Я сказал, что для реальных продуктов лучше брать готовые контейнеры. Написать что-то лучше них - это тяжелая задача даже для опытного программиста. А случаи, когда возникает необходимость в своих костылях не так часты и обычно связаны с особыми требованиями.

Вот скажи прямым текстом, чем тебя не устраивают стандартные контейнеры?

Я пожалуй таки спрошу, хотя наверное пожалею, о том каков твой уровень. Просвяти.

Dudraug ★★★★★
()
Ответ на: комментарий от Dudraug

ТС - не слушает никого и ничего, имеет крайне узкий кругозор, считает местный форум - как личное средство получение бесплатных подсказок - кого Вы лечите

Silerus ★★★★
()
Ответ на: комментарий от Dudraug

Вот скажи прямым текстом, чем тебя не устраивают стандартные контейнеры?

Контейнеры нормально. Но в си я структуры пишу, поэтому не пойму что ты тут мне про контейнеры пишешь. Код, который на с++ с контейнерами сделан. Я на си кое-что новое внес, и в c++ сделаю некоторые изменения.

Написать что-то лучше них - это тяжелая задача даже для опытного программиста.

Иногда контейнера с шаблоном не работает как нужно. И писал свой, который работал. Незнаю какой там функционал у того контейнера, но по сравнению с ним, у меня было всего лишь два нужных метода.

Я пожалуй таки спрошу, хотя наверное пожалею, о том каков твой уровень. Просвяти.

А есть тест какой нибудь? Я на geekgrains не на все вопросы правильные ответы дал. А еще я не учился в универе, поэтому знаю только то, до чего додумался или высмотрел в исходных кодах других программ.

Выкинь каку. Ты специально что ли эту дичь выбрал?

Зачем мне тебя слушать? Я их все равно все перечитаю. А книгу которую я читаю советовал автор, которого я уже не помню как зовут, а скляров.

u0atgKIRznY5
() автор топика
Ответ на: комментарий от u0atgKIRznY5

Контейнеры нормально. Но в си я структуры пишу, поэтому не пойму что ты тут мне про контейнеры пишешь. Код, который на с++ с контейнерами сделан. Я на си кое-что новое внес, и в c++ сделаю некоторые изменения.

Во-первых, переписывать что-то написанное на с++ на си - это верх идиотизма. Серьезно. Во-вторых контейнеры готовые есть и для чистого си - гугл тебе в помощь.

Иногда контейнера с шаблоном не работает как нужно.

Это как? Можно примеры? Мне кажется, что ты просто не разобрался с ними.

Незнаю какой там функционал у того контейнера, но по сравнению с ним, у меня было всего лишь два нужных метода.

Ты ж знаешь что такое аллокаторы? Сможешь ли ты сам написать максиально эффективный контейнер, которые оптимально работает с памятью? Ты ж любитель быстрого, ты должен стремиться к эффективным решениям.

Зачем мне тебя слушать? Я их все равно все перечитаю. А книгу которую я читаю советовал автор, которого я уже не помню как зовут, а скляров.

Может меня (как и других) стоит слушать потому что я у меня многолетний опыт работы программистом? А у многих других людей, которые пытаются до тебя хоть что-то донести, еще больше чем у меня. Тебе дают дельные советы, но ты их отвергаешь. Качество твоего кода довольно хреновое. Да даже не в качестве кода дела - у тебя отсутствиет понимание того, что ты делаешь и как это все работает. А это еще хуже чем говнокод. Лучше одумайся и начинай изучать вопрос.

А есть тест какой нибудь? Я на geekgrains не на все вопросы правильные ответы дал. А еще я не учился в универе, поэтому знаю только то, до чего додумался или высмотрел в исходных кодах других программ.

При чем тут тесты? Тебе люди с опытом говорят, что твой уровень не очень. И дают тебе советы как его изменить и указывают на то, что ты делаешь не так. А ты их не слушаешь. И главная проблема не в том, что ты фигню пишешь, а в том, что ты не воспринимаешь критику от слова вообще. Ты не осознаешь, что ты делаешь фигню и не пытаешься обучиться, изменить свой уровень. Ты уверен, что ты все делаешь правильно. И в этом ошибка.

Dudraug ★★★★★
()
Ответ на: комментарий от u0atgKIRznY5

А книгу которую я читаю советовал автор

Страуструп - создатель с++, у него очень граматная книга описывающая концепцию языка, его подводные камни и способы првильно использовать язык. У него есть издание под с++11/14. А ты приводишь книгу о которой никто толком и не слышал никогда. Как думаешь почему?

Dudraug ★★★★★
()
Ответ на: комментарий от Dudraug

Как думаешь почему?

Потому что думают так, а кто написал c++, этот, а ну этого только будем знать, другие лучше не напишут. Так у страуструпа наверное справочник.

Это как? Можно примеры? Мне кажется, что ты просто не разобрался с ними.

Нет, код не для тебя. Но я там без динамической памяти использовал, типа контейнера стека.

Во-первых, переписывать что-то написанное на с++ на си - это верх идиотизма. Серьезно.

С чего ты взял?

Может меня (как и других) стоит слушать потому что я у меня многолетний опыт работы программистом?

А что ты мне подсказывал что нибудь с твоим то опытом, ты кроме как посоветовать книгу не смог же ничего. Понимаю, если бы ты с кодом помог, но увы, ты думаешь о другом.

u0atgKIRznY5
() автор топика
Ответ на: комментарий от u0atgKIRznY5

Так у страуструпа наверное справочник.

У него учебник, по которому можно язык изучить очень хорошо.

Потому что думают так, а кто написал c++, этот, а ну этого только будем знать, другие лучше не напишут.

Если б книга б была хорошей, о ней все бы слышали.

Нет, код не для тебя. Но я там без динамической памяти использовал, типа контейнера стека.

Ты приведи пример который воспроизводит проблему. Мол создал контейнер, туда что-то запихнул - не работает. Ты не хочешь раскрывать код - ладно. Но представить пример проблемы с контейнером - это не означает раскрытие твоей задумки, твоей архитектуры или твоих алгоритмов. Это просто проблема с контейнером. Если ты даже не умеешь вопросы задавать... мне тебя жалко...

С чего ты взял?

Потому что это задача, которая по сути не несет никакого смысла. Никаких профитов, а только потраченное время.

А что ты мне подсказывал что нибудь с твоим то опытом, ты кроме как посоветовать книгу не смог же ничего. Понимаю, если бы ты с кодом помог, но увы, ты думаешь о другом.

Я тебе посоветовал:

1) да, книгу, ибо твой код УЖАСЕН. И то что ты говоришь ужасно до ужаса, на лицо полное непонимание основ. Я не могу тебе рассказать основы. Если я укажу на ошибку в коде, то ты ничего не поймешь. У тебя фундаментальные проблемы. И именно на это я указываю. Именно ЭТО я советую улучшить

2) Я советую не заниматься фигней вроде переписывания с с++ на си. Если обратное (си -> c++) еще имеет какой-то смысл (и то тоже не всегда), то уж это точно лишено смысла. Хотя нет, есть одна причина, когда это может быть надо. Например разработка под аппаратную платформу где нет компилятора плюсов. Но это явно не твой случай=)

3) Я советую использовать в продукте готовые контейнеры. Ибо они будут на 99.9% лучше твоих костылей.

4) Я спросил с тебя пример проблемы с stl, чтобы указать на твои ошибки и посоветовать тебе как правильно их использовать. Но ты уперся.

Чувак, одумайся. Иначе будешь заниматься html версткой (даже не пхп) в будущем.

Dudraug ★★★★★
()
Ответ на: комментарий от Dudraug

Страуструп - создатель с++

Манипуляция, а вернее полное враньё. Никакой струструп С++ не создавал - он сваял кое как рабочие си с классами. И то, это был не язык.

Это типичная проблема для болтунов - отсутствие хоть какого-то желания отличать жопу от пальца. И наверное создателем майбаха является какой-нибудь пионер из 18века?

Всё что страуструп «родил» - является убогим дерьмом даже сейчас, спустя тысячу лет - те же стримы.

у него очень граматная книга описывающая концепцию языка

Никакие концепции там не описаны. Там 80% книги это мануалы «как написать очередной хевлорд», стримы и прочая херня. Никаких концепций там и близко нет.

его подводные камни и способы првильно использовать язык.

Таким там даже и не пахнет. А подводные камни это наверное что-то уровня «не забудь поставить бряк после тела кейса» и прочая ахинея.

Поэтому рассказывать о том, что книги страуструпа являются чем-то большим, нежели чтивом для дошколят не стоит.

rustonelove
()
Ответ на: комментарий от Dudraug

У него учебник, по которому можно язык изучить очень хорошо.

Ну в рамках представлений дошколят о языке - да.

Ибо они будут на 99.9% лучше твоих костылей.

На самом деле это камень в огород не его, а вообще. Ну если опять же - в рамках представлений дошколят, то да. Не надо мне рассказывать о том, что «лучше ЕГО кода», нет - это типичная мантра любого дошколёнка.

rustonelove
()
Ответ на: комментарий от rustonelove

Ну в рамках представлений дошколят о языке - да.

А у ОПа наверное уровень другой?

На самом деле это камень в огород не его, а вообще. Ну если опять же - в рамках представлений дошколят, то да. Не надо мне рассказывать о том, что «лучше ЕГО кода», нет - это типичная мантра любого дошколёнка.

Вот тут я не понял твоей мысли. Ты согласен, что костыли писать не надо? Или таки ты считаешь, что он правильно все делает? Я из этого предложения твоей позиции по вопросу не понял.

Dudraug ★★★★★
()
Ответ на: комментарий от Dudraug

А у ОПа наверное уровень другой?

Ну ты говоришь не про уровень ОПа?

Вот тут я не понял твоей мысли. Ты согласен, что костыли писать не надо?

Да, их не надо писать, если ты не можешь. Либо, если можешь и на результат насрать. Протопирование, впарить лохам дерьмо и прочее.

Или таки ты считаешь, что он правильно все делает? Я из этого предложения твоей позиции по вопросу не понял.

Дело в том, что эта мантра, которую ты использовал - используется всеми, и не только в контексте дошколят, но и вообще. Я против этого.

Вот ты выше пишешь «не можешь управлять нормально памятью», дак и С++ не может. Всё зависит от того с какого уровня смотреть.

rustonelove
()
Ответ на: комментарий от rustonelove

Дело в том, что эта мантра, которую ты использовал - используется всеми, и не только в контексте дошколят, но и вообще. Я против этого.

Ну я выше писал, что случае когда свои костыли и велосипеды нужны бывают. Но сказал, что опу о этом думать пока рано. Только если для обучения и понимания алгоритов, но он вроде как продукт пишет, а не лабу в универе=)

Безусловно писать что-то, что уже есть иногда надо. Иначе бы не было б столько библиотек с похожими вещами.

Dudraug ★★★★★
()
Ответ на: комментарий от Dudraug

Безусловно писать что-то, что уже есть иногда надо. Иначе бы не было б столько библиотек с похожими вещами.

Это из-за того, что в c++ постоянно говорят по повторное использование кода, а на деле только в си используют повторное использования кода, но не говорят об этом постоянно, как в с++.

u0atgKIRznY5
() автор топика
Ответ на: комментарий от XMs

Честное слово, вспомнил выражение из книги. Думаю это о том, что хоть ты пишешь классы, они не будут в других программах эти же классы использоваться, а будут похожие. А в си, написал структуру, захотел ее использовать в другой программе, используй.

u0atgKIRznY5
() автор топика
Ответ на: комментарий от u0atgKIRznY5

Думаю это о том, что хоть ты пишешь классы, они не будут в других программах эти же классы использоваться, а будут похожие

Как раз наоборот, и это касается не столько классов, сколько механизмов, которые реализуются этим кодом. Есть у тебя библиотека для работы а алгоритмами компрессии, которая используется кучей софта — вот и повторное использование. Есть у тебя фреймворк, позволяющий высокоуровнево и кроссплатформенно работать с файлами, базами данных, сетью — вот тебе повторное использование. А если в этом фреймворке используются какие-то свои единые механизмы, вызываемые из самых разных мест, то вообще хорошо

XMs ★★★★★
()
Ответ на: комментарий от XMs

Как раз наоборот, и это касается не столько классов, сколько механизмов, которые реализуются этим кодом. Есть у тебя библиотека для работы а алгоритмами компрессии, которая используется кучей софта — вот и повторное использование. Есть у тебя фреймворк, позволяющий высокоуровнево и кроссплатформенно работать с файлами, базами данных, сетью — вот тебе повторное использование. А если в этом фреймворке используются какие-то свои единые механизмы, вызываемые из самых разных мест, то вообще хорошо

Так что получается, везде используется повторный код?

u0atgKIRznY5
() автор топика
Ответ на: комментарий от u0atgKIRznY5

Так или иначе — да. Вопрос в том, насколько много кода может быть использовано повторно и сколько реально используется. В крупных проектах, которые пилит множество разработчиков, неизбежно появляются куски кода, делающие примерно одно и то же. Поэтому периодически приходится делать рефакторинг, чтобы объединять их и убирать избыточность

XMs ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.