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

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

Потому, что я написал эквивалент. Он хотел стрелочку - я дал ему стрелочку.

Да и скобочки для дошколят, т.к. никто, кроме дошколят, счётчиками массивы не обходит.

rustonelove
()
Ответ на: комментарий от u0atgKIRznY5
- Язык программирования Си. K&R
- Практика программирования. Керниган и Пайк
- Язык программирования С++
- Unix. Профессиональное программирование. Стивенс.
- Что-нибудь про патерны проектирования.
(есть соседний тред с сылкой в коментах на хороший русскоязычный ресурс по теме)

Потом можно исходники хороших проектов посмотреть, например stl(но тут можно слегка поехать головой от темплейтов).

Dudraug ★★★★★
()
Последнее исправление: Dudraug (всего исправлений: 2)
Ответ на: комментарий от i-rinat

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

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

STL это очень специфический код. Советовать его читать изучающему C++ это всё равно что учиться программировать на C, читая исходники glibc. Это всё очень специализированный код, с кучей всяких ограничений. Чтобы понять, почему тот или иной участок сделан именно так, нужно уже очень хорошо знать язык.

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

технология проектирования программного обеспечения можно посоветовать почитать, но фигли толку

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

Кстати, glibc в топку, но NetBSD libc - почти литературный код (насколько возможно в C). Дико рекомендую, например, и для стиля, и для представления о работе libc в общем-то.

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

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

Это из разряда того, что зачем есть еду? Жри баланду/перегной - один хрен всё смешается/сгниёт. Ну и плюс - мир не ограничивается подобным примером. В мире сотни других примеров, где код будет не идентичен, да и где скобочками не обойтись. И скобочка-эксперт тут же сядет в лужу, как это всегда и бывает.

Человек следует тому, что ему привычно. И использует то, что лучше и универсальней. Скобочки можно писать, но когда ты адепт скобочек - из этого следует только одно - ничего кроме скобочек ты не видел и ни что не можешь. Иначе, ты будешь использовать менее убогие конструкции.

Поэтому плохи не сами скобочки, а именно сектанты-ламерки, которые вчера вылезли из-за парты и всем вещают о том, что скобочки «наше всё». Это уже по умолчанию ламерок, призвание которого - мести улицу, а не писать на этом языке.

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

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

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

прочитай сначала K&R, два раза, от начала до конца, с разбором всех примеров и упражнений. тогда у тебя появится представление о том, что такое указатели, массивы и динамическое выделение памяти.

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

В мире сотни других примеров, где код будет не идентичен

Приведи хотя бы сотню.

Человек следует тому, что ему привычно.

Да, и в этом суть. Нужно делать максимально просто. Если каждый будет извращаться в коде, как ему вздумается, когда кода станет много, всё накроется медным тазом.

i-rinat ★★★★★
()
Ответ на: комментарий от anonymous

Опять эксперты вылезают из всем известных мест. «NetBSD libc» - это убогая параша, которая попросту не конкурентоспособна glibc.

Любой её адепт, как и её код - бездарный мусор, который не котируется в этом мире. Никому в этом мире бездарные ламерки, которые кое-как осилил сваять libc по лекалам 75года - не нужны. Это поделка от школоты для школоты, которая максимум тянет на лабу.

В этом вся проблема дошколят, что они будучи дошколятами не понимают, что и почему/зачем сделано в glibc, да и вообще в коде, соответствующем современным реалиям.

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

Приведи хотя бы сотню.

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

Да даже в хелвордах ты получаешь «идентичный» код, только из-за компелятора, который умеет выделять паттерн обхода и заменяет его на нормальный.

Да что там далеко ходить - тутошняя темя с многомерными массивами. И ты уже сел в лужу со скобочками.

Да, и в этом суть. Нужно делать максимально просто. Если каждый будет извращаться в коде, как ему вздумается, когда кода станет много, всё накроется медным тазом.

Я уже тебе в 10раз объясняю прописные истины. Если ты домохозяйка - делай как проще. В мире же чуть выше - твои рассуждения имеют мало смысла.

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

Типичный пример - шаблонны и вообще компилтайм в крестах. Человек, который знает язык, который понимает язык и способен на нём писать( не рядовой мойщик полов, который случайно сюда попал, осилил 1-2курс и пошел ваять хелворды) - пишет и понимает любой код так же, как хелворды 1-2курса.

Это любимая отмазка всех дошколят о том, что нужно проще - нет, не нужно проще. Нет, то, что ты не осилил - это не извращения. Это ты не осилил. Для людей способных - это 2х2.

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

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

И вопрос не по теме, почему у тебя на аватарке уставший вид?

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

Ах ну и да, сама постановка вопроса о «проще» - манипуляция. Ты монополизировал слово «проще» и теперь она значит одно - шоколята/домохозяйки не могут в конструкции сложнее хелворда, да и не могут вообще в конструкции. Они попросту не могут осилить больше 2-3 конструкций.

Причина проста - они не знают языка. Они заучили 2-3паттерна и комбинируют из них дерьмо разных сортов. Вы - это детсадовцы, которые заучили 2-3 фразы и выражают ими мысли. И действительно, в представлении детсадовца - все слова за рамками этих двух/трёх фраз - лишние/сложные.

Только вот незадача, как только детсадовец вырастает из ясельной группы - он уже не может выражать свои мысли в рамках этих 2-3конструкций/фраз и вместе с тем начинает понимать - зачем нужны другие/сложные слова.

И штука в том, что вы эту ясельную группу не переросли.

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

В мире сотни других примеров, где код будет не идентичен

Приведи хотя бы сотню.

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

Ты ж написал про сотни примеров. А теперь я должен их приводить. Нехорошо. Наврал?

В мире же чуть выше - твои рассуждения имеют мало смысла.

Каком таком мире чуть выше? Где он? Столько разговоров, а примеров-то нет.

Нет, то, что ты не осилил - это не извращения. Это ты не осилил. Для людей способных - это 2х2.

И что делают люди способные? Примеры-то хоть есть?

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

И штука в том, что вы эту ясельную группу не переросли.

Я в неё вернулся. :-D

Ты что, всерьёз считаешь, что у кого-то вызывает проблемы a[b] vs. *(a+b) при чтении? Тем не менее, предпочитают первый вариант. Возможно, когда-нибудь ты поймёшь, почему.

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

Ты ж написал про сотни примеров. А теперь я должен их приводить. Нехорошо. Наврал?

О боже, ты реально, домохозяйка, думаешь, что можешь меня поймать?

Всё очень просто, ты пытаешься со мною спорить, утверждая обратное. Если ты утверждаешь обратное, то ты точно так же должен приводить эти примеры.

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

Каком таком мире чуть выше? Где он? Столько разговоров, а примеров-то нет.

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

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

Примеры разных миров я тебе уже привёл. В частности - пример с шаблонами/компилтаймом в крестах, выше был пример с glibc. Это всё из того самого мира.

И опять же, трепло игнорирует всё это.

И что делают люди способные? Примеры-то хоть есть?

Как минимум пример я в сравнение с тобою. Поэтому далеко ходить не надо.

А примеры проектов/кода? Любой сложный проект. Выше уже приводил glibc.

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

А, ну и для пацанов поясню почему эта домохозяйка находится в яслях, и почему ясли и реальность находятся в разных мирах.

Почему дошколята не понимают того, почему вариации (ptr + diff) сильнее/мощнее и привычнее того же ptr[diff], для тех, кто существует не в районе лабы.

Простой пример, в реальности подавляющие большинство сишных кейсов - это касты. Допустим, у нас есть void * ptr. Даже если наша домохозяйка осилит ((T *)ptr)[diff].field - это полная параша, который выглядит более убогой нежели даже ((T *)ptr + diff)->field

Но это только доступ к полю - нам нужно сохранить указатель на этот елемент - что мы будем делать? Правильно - зачем нам его разименовывать( &((T *)ptr)[diff] - это просто феерическая параша), чтобы потом опять брать адрес? Вменяемый челочек напишет (T *)ptr + diff.

Это я ещё не говорю о том, что diff может быть и сложный, в байтах. Что будет делать скобка-ламерок? Правильно - поедет на помойку. А человек просто спастит каст за скобку (T *)(ptr + diff);

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

Так же, я этому дошколёнку уже писал про те же многомерные массивы. Он это проигнорировал.

Далее, этот дошколёнок пытается манипулировать, сводят тему к «a vs. *(a+b)», хотя это явно не так.

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

Ты пишешь glibc?

Вот, дошколёнок уже полностью слился и начинает нести ахинею. Вопросы был о чём?

И что делают люди способные? Примеры-то хоть есть?

Теперь этот балабол, считая вас совершенно за идиотов, начинает менять тему и писать ахинею.

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

Слабость и неспособность проявляется во всём. Точно так же тут проявляется и то, что дошколёнок живёт в мире своих фантазий. Он считает, что его оппонент идиот, что он может попросту брать и врать, манипулировать, съезжать с тему и подменять понятия. Он думает, что он это может и на это способен. Он думает, что он равный - нет.

И таким людям постоянно нужны оправдания. Они постоянно пишут какую-то ахинею, апеллируют к мнению соседей по парте, к какому-то магическому правильному.

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

Вопросы был о чём?

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

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

Ты с темы-то не съезжай. Опять эти глупые попытки?

Ты много и громко говоришь. Это просто слова или за ними что-то есть?

Что значит «что-то есть», ты опять пытаешься подменять понятия? Если бы за моими словами ничего не было, то не ты бы слился и юлил, не подобные тебе, а я.

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

Вы же не можете этого сделать и постоянно пытаетесь слиться на свои хелворды. Меня это всегда удивляло. В чём смысл подобного? Я же как минимум не апеллирую к чему-то, кроме банальной логики. Меня не интересуют знамения-хелворды.

У нас просто разные интересы. Кому-то интересно стругать табуретки. Вот он сделал какую-нибудь фигню и ему нормально - ему этого хватает. В этом весь diy и не только программирование. Мне это не интересно. Мне не интересно делать дерьмо, даже зная, что мало кто может это сделать - это один хрен дерьмо.

Мне не интересно сводить аргументацию к каким-то хелвордам и какой-то нонейм-практики на дне моря-окияна.

Поэтому, когда я что-то пишу и о чём-то рассуждаю - я апеллирую только к примитивной логике. Мне ничего другое не нужно. Апелляция же к реальности нужна уже после/совместно, а не вместо.

Хотя ваша реальность сводится к тому, что мне так сказали - я так делаю. И все твои рассуждения на «потом поймёшь» - это всё мечты о том, что меня точно так же заставят/отнимут выбор. Только это ничего не поменяет. И всё сводится к тому, что тебе просто не хочется в этом признаваться.

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

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

Почему у вас всех такое ярое желание себя защищать и строить из себя что-то, хотя вы этого не можете. Тебе не понравилось то, что я сказал про скобочки? Я там специально сделал ремарку о том, что если ты не «скобочка-сектант», то к тебе это отношения не имеет.

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

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

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

Это, конечно, свойство любых работников поточного производства, но тут прям это во всём. Но это скорее свойство того, что область как-бы поделена на два уровня. И основные обитатели - это в основном уровень второй.

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

Вы же не можете этого сделать и постоянно пытаетесь слиться на свои хелворды. Меня это всегда удивляло. В чём смысл подобного?

Нет, сейчас идёт обсуждение тебя. То что я там пишу или не пишу, вообще значения в рамках данной дискуссии не имеет.

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

И не надо так нервничать и заводиться.

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

Нет, сейчас идёт обсуждение тебя. То что я там пишу или не пишу, вообще значения в рамках данной дискуссии не имеет.

В этом и проблема, что ты попытался обсуждать тему - слился. Что тебе остаётся, кроме как обсуждать меня.

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

Это ещё одна попытка манипулировать аудиторией. Да и не только тобой.

Объясню публике что они пытаются сделать и как это вообще работают. Допустим, предположим. Есть некое сообщество/подобщество древних. Всё очень просто, они там спокойно занимаются своим делом.

Далее, начинают эти древние сраться на форуме. У них ничего не выходит, она малоразвитые, глупые и прочее. Что же делать?

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

Естественно, никаких пруфов нет, ничего нет. Есть только другие такие же древние, что повторяют одну и ту же агитку. Наши «достижения» - признак состоятельности.

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

А потом, когда подобные древние садятся в лужу - они начинают тебе говорить. А сколько раз ты продал свою жопу? А не жопу? Не продавал? Не такой как мы? Да ты вообще не человек.

И постоянно подобные персонажи всё давят и давят на то, что у тебя нет их достижений. И публика постепенно забывает то, о чём вообще идёт речь. Как соотносится одно и другое. Почему состоятельный «профессионал» садиться в лужу уже с первым/вторым постом, в попытках спорить со мною?

Всё правильно. Увести тему подальше о своей реальной состоятельности и перевести внимание на свои «подвиги».

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

Если упростить, то это попытка выдать свои «достижения»/«веру» за самые правильные достижения/веру. Тем самым, записывая всех остальных в неправильных.

В данном случае, этот балабол пытается сыграть некое чувство пренебрежения, вызвав у публики то чувство, будто бы это не он обделался, а я это придумал. Будто бы он что-то там пытался, как бы проявляя снисхождение ко мне. И сейчас он говорил «не серьёзно». Это такая клоунада от дошколят для дошколят.

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

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

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

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

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

Самому мне трудно остановиться.

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

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

u0atgKIRznY5 ☆ (21.11.2017 18:11:57) «Ты чего из себя главного строишь. Можешь вообще помалкивать и ждать моей программы.» «Но на изображении видны изображения, среди этих изображений, есть символ треугольник.»

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

Почему, я знаю что такое память и что такое динамическая память

из того кода, что ты тут привёл - нет. в Си не входит ничего лишнего. в отличие от плюсов, где ещё только разве что кофеварку не встроили. однако это не значит, что с реализацией есть какие-то проблемы. ты сейчас говоришь, что «тебе понравился» метод. но это не так. ты просто НЕ ПОНИМАЕШЬ, как работает динамическое выделение и не можешь осилить элементарнейший двумерный массив для детского сада. тут дело не в том, что тебе что-то нравится. а в том, что ты не можешь. вот и всё. то же самое и со стилем кода. можно говорить о том, что тебе так удобнее, когда ты написал мегабайт кода и что-то понял. а пока ты написал три строчки, твоё мнение о стиле мало кого волнует.

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

Если хочется показать человеку контейнеры на шаблонах, то лучше что-нибудь другое вместо STL. Например, библиотеку из Doom3. Всё хочу её отодрать от дум3, вынести в либу и расширить по своему усмотрению на собственный же код.

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

a1batross ★★★★★
()
Последнее исправление: a1batross (всего исправлений: 1)
Ответ на: комментарий от rustonelove

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

Человек следует тому, что ему привычно. И использует то, что лучше и универсальней.

Нет, тут скобочки дают одинаковый результат и при этом кода меньше

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

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

struct list **l = (struct list **)
calloc ( 10, sizeof ( struct list ) );

for ( int i = 0; i < 10; i++ )
{
  l[i] = ( struct list *) calloc ( 10, sizeof ( struct list ) );
}
Вот освобождение.
struct list *f;
struct list *d;
for ( int y = 0; y < 10; y ++ )
{
  for ( int x = 0; x < 10; x ++ )
  {
     f = &l[y][x];
     f = f->next;
     while ( f )
     {
        d = f;
        f = f->next;
        free ( d );
     }
 
  }
    free ( &l[y][x] );
}
free ( l );

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

Во-первых, в Си касты у calloc() не нужны — убираешь их и повышаешь читаемость. Во-вторых, первый calloc выделяет неправильный объём памяти.

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

typedef struct { size_t c, r; struct list *} table_t;
struct table_t *data_alloc(size_t rows, size_t columnt);
void data_free(table_t *table);
struct list data_get(table_t *table, size_t row, size_t column);
int data_set(table_t *table, size_t row, size_t column, struct list data);

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

XMs ★★★★★
()
Ответ на: комментарий от XMs
--- typedef struct { size_t c, r; struct list *} table_t;
+++ typedef struct { size_t c, r; struct list *d} table_t;

Мои извинения

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

тебе нужно понять, как работает динамическое выделение памяти и что такое указатели. для этого нужно прочитать K&R. я это уже три раза написала, кажется. тот код, который ты тут привёл, доказывает твоё полное непонимание того, как устроены динамические массивы.

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

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

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

я не открывала книгу с тех пор, как мне было 12 лет. потому что я тогда С изучила. а тебе её всё равно надо целиком читать, причём два раза. так что страница тебе не поможет.

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