P0JIT0H #761 23 апреля 2013 (изменено) ошибки при компиляции никакой выскакивать и не будет, компилятор не проверяет, выходишь ты за границы массива или нет.Будет ошибка во время выполнения, если адрес по смещению mas+3 не будет принадлежать программе. Но он спокойно может принадлежать программе и тебе просто выдастся какое-то левое число, которое ты никогда не видел. добро пожаловать в мир указателей. Я правильно понял что я выделяю память из кучи, а когда я записываю mas[0][3] Значение 2, то фактически какой-то рандомный кусок из кучи заменяется этим значением Изменено 23 апреля 2013 пользователем P0JIT0H Поделиться сообщением Ссылка на сообщение
Kant #762 23 апреля 2013 в общем то да.Если он не будет принадлежать твоей программе, дебаггер во время выполнения должен будет выкинуть ошибку.А если запускать без дебаггера, то уже как повезет. Хоть немедленная критическая ошибка, хоть нихуя Ну и кусок кучи в общем то не рандомный, адрес ведь у тебя есть, правда лежит там что-то неведомое. Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью. Поделиться сообщением Ссылка на сообщение
P0JIT0H #763 23 апреля 2013 в общем то да.Если он не будет принадлежать твоей программе, дебаггер во время выполнения должен будет выкинуть ошибку.А если запускать без дебаггера, то уже как повезет. Хоть немедленная критическая ошибка, хоть нихуя Ну и кусок кучи в общем то не рандомный, адрес ведь у тебя есть, правда лежит там что-то неведомое.спасибо огромное Поделиться сообщением Ссылка на сообщение
mos-tal #764 23 апреля 2013 дропнул друзей и родню сел кодить и кодил пока не взяли на работу. Теперь очень доволен. Не здавайтесь Поделиться сообщением Ссылка на сообщение
Гость 2poy_nyasha #765 23 апреля 2013 дропнул друзей и родню сел кодить и кодил пока не взяли на работу. Теперь очень доволен. Не здавайтесьни друзей, ни родных, ни личной жизни да ну нахуй такую жизнь Поделиться сообщением Ссылка на сообщение
rubish #766 23 апреля 2013 Я правильно понял что я выделяю память из кучи, а когда я записываю mas[0][3] Значение 2, то фактически какой-то рандомный кусок из кучи заменяется этим значениемты не выделяешь память. у тебя есть указатель типа инт на элемент mas[0][0], который ты получил, когда выделил память во второй раз. и по сути то, что ты делаешь - это указатель + 3.в следующий раз на месте этого элемента может быть что-то другое Колы я выросту - то хочу буты такым як я годные смайлы Поделиться сообщением Ссылка на сообщение
P0JIT0H #767 23 апреля 2013 Я правильно понял что я выделяю память из кучи, а когда я записываю mas[0][3] Значение 2, то фактически какой-то рандомный кусок из кучи заменяется этим значениемты не выделяешь память. у тебя есть указатель типа инт на элемент mas[0][0], который ты получил, когда выделил память во второй раз. и по сути то, что ты делаешь - это указатель + 3.в следующий раз на месте этого элемента может быть что-то другоеДа, я это понял ах да ещё вопросmas[0] = new int [1]; тут я 1)как бы выделяю память на ещё 1 элементили2)я указываю что память выделяемая всего на 1 элементТо есть в 1 случае я могу mas[0] = new int [1]; написать ещё раз и тогда память выделется ещё под 1 элемент, или же mas[0] = new int [1]; второй раз ничего не даст? Поделиться сообщением Ссылка на сообщение
Гость 2poy_nyasha #768 23 апреля 2013 Я правильно понял что я выделяю память из кучи, а когда я записываю mas[0][3] Значение 2, то фактически какой-то рандомный кусок из кучи заменяется этим значениемты не выделяешь память. у тебя есть указатель типа инт на элемент mas[0][0], который ты получил, когда выделил память во второй раз. и по сути то, что ты делаешь - это указатель + 3.в следующий раз на месте этого элемента может быть что-то другоеДа, я это понял ах да ещё вопросmas[0] = new int [1]; тут я 1)как бы выделяю память на ещё 1 элементили2)я указываю что память выделяемая всего на 1 элементТо есть в 1 случае я могу mas[0] = new int [1]; написать ещё раз и тогда память выделется ещё под 1 элемент, или же mas[0] = new int [1]; второй раз ничего не даст?да хуй знает чо ты меня спрашиваешь ваще? я ебал в рот работу с памятью, это обязанность ОС Поделиться сообщением Ссылка на сообщение
Kant #769 23 апреля 2013 (изменено) int **mas - двойной указатель на инт mas[0], mas[1], mas[2] - один раз разименовали указатель, получили одинарные указатели на инт mas[0][0] - сам инт, который лежит по указателю, разименованному уже два раза new возвращает указатель на выделенный участок памяти, а ты его просто хранишь.когда ты пишешь mas[0] = new int[n], ты говоришь, что область памяти, на которую указывает указатель mas[0] будет иметь размер на n штук интов. если ты второй раз напишешь mas[0] = new int[n], то ты просто затрешь старый указатель, вместе с этим полностью потеряв доступ к старой памяти, и получишь новый участок памяти на n интов размером. Так как указатель на старый ты просрал, удалить память через delete ты уже не можешь. И ты получаешь утечку памяти Я правильно понял что я выделяю память из кучи, а когда я записываю mas[0][3] Значение 2, то фактически какой-то рандомный кусок из кучи заменяется этим значениемты не выделяешь память. у тебя есть указатель типа инт на элемент mas[0][0], который ты получил, когда выделил память во второй раз. и по сути то, что ты делаешь - это указатель + 3.в следующий раз на месте этого элемента может быть что-то другоеДа, я это понял ах да ещё вопросmas[0] = new int [1]; тут я 1)как бы выделяю память на ещё 1 элементили2)я указываю что память выделяемая всего на 1 элементТо есть в 1 случае я могу mas[0] = new int [1]; написать ещё раз и тогда память выделется ещё под 1 элемент, или же mas[0] = new int [1]; второй раз ничего не даст?да хуй знает чо ты меня спрашиваешь ваще? я ебал в рот работу с памятью, это обязанность ОСон тебя и не спрашивал и обязанность ос - дать тебе твое собственное виртуальное адресное пространство. Остальное лежит только на твоей совести. Изменено 23 апреля 2013 пользователем Kant Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью. Поделиться сообщением Ссылка на сообщение
P0JIT0H #770 23 апреля 2013 int **mas - двойной указатель на инт mas[0], mas[1], mas[2] - один раз разименовали указатель, получили одинарные указатели на инт mas[0][0] - сам инт, который лежит по указателю, разименованному уже два раза new возвращает указатель на выделенный участок памяти, а ты его просто хранишь.когда ты пишешь mas[0] = new int[n], ты говоришь, что область памяти, на которую указывает указатель mas[0] будет иметь размер на n штук интов. если ты второй раз напишешь mas[0] = new int[n], то ты просто затрешь старый указатель, вместе с этим полностью потеряв доступ к старой памяти, и получишь новый участок памяти на n интов размером. Так как указатель на старый ты просрал, удалить память через delete ты уже не можешь. И ты получаешь утечку памяти Я правильно понял что я выделяю память из кучи, а когда я записываю mas[0][3] Значение 2, то фактически какой-то рандомный кусок из кучи заменяется этим значениемты не выделяешь память. у тебя есть указатель типа инт на элемент mas[0][0], который ты получил, когда выделил память во второй раз. и по сути то, что ты делаешь - это указатель + 3.в следующий раз на месте этого элемента может быть что-то другоеДа, я это понял ах да ещё вопросmas[0] = new int [1]; тут я 1)как бы выделяю память на ещё 1 элементили2)я указываю что память выделяемая всего на 1 элементТо есть в 1 случае я могу mas[0] = new int [1]; написать ещё раз и тогда память выделется ещё под 1 элемент, или же mas[0] = new int [1]; второй раз ничего не даст?да хуй знает чо ты меня спрашиваешь ваще? я ебал в рот работу с памятью, это обязанность ОСон тебя и не спрашивал и обязанность ос - дать тебе твое собственное виртуальное адресное пространство. Остальное лежит только на твоей совести.хмм ясно, мне просто дан текст и я знаю в нём максимальное количество столбцов, но не знаю количество строк, и вот я подумал увеличивать память для строк по ходу их ввода, не мог ты подсказать функцию для этого Поделиться сообщением Ссылка на сообщение
rubish #771 23 апреля 2013 ах да ещё вопросmas[0] = new int [1]; тут я 1)как бы выделяю память на ещё 1 элементили2)я указываю что память выделяемая всего на 1 элементТо есть в 1 случае я могу mas[0] = new int [1]; написать ещё раз и тогда память выделется ещё под 1 элемент, или же mas[0] = new int [1]; второй раз ничего не даст?массивы имеют постоянную длину потому, что в памяти элементы массива хранятся последовательно. Колы я выросту - то хочу буты такым як я годные смайлы Поделиться сообщением Ссылка на сообщение
TomODan #772 23 апреля 2013 бля я не врубаюсьнапишите плз бтв еще посоны, ну там у меня бд содержит • Данные о сотрудниках (фио, адрес, дата рождения, должность); • Данные о услугах(наименование, цена); • Данные о клиенте (фио, адрес, дата рождения); • Данные о договоре(номер договора, данные о сотруднике, данные о услуге, данные о клиенте); можно как нить 1 раз ввести и чтобы она сохранилась? Хуево тебе. Спроси её может можно на чем-нибудь вменяемом делать. Просто работать с бд на паскале... ну я не знаю... Шурупы она блять пальцами закручивает? Типа отвертки для слабых? Если её важен результат, а не паскальный код то....паскаль отличный язык для обучения, очень похожий на С, но проще. И он не мертв. Еще долго не будет мертв. Вот делфи хуйня ебаная, которую embarcadero тупо ведет в могилу. И у казика нет даже намеков на бд в его программе. Я конечно, может и неправ, но нас еще со школы начинали учить сразу .Net.Имхо - паскаль может и прост, но почти любой другой яп может всё тоже самое, но в разы удобнее и, имхо, ооп проще для понимания человека. Так что если и учить кого-то сейчас - то c#, java, еще что-то. Да, обучаемые не будут использовать всю мощь яп, но зато научившись работать в них не будет проблем с переходами и т.д. Короче - для новичков они так же просты как и паскаль, но в них есть возможность развиваться, а в паскале - нет. Слишком он уж устарел. Поделиться сообщением Ссылка на сообщение
rubish #773 23 апреля 2013 ну нихуя ж себе паскаль уже на си похож. бейсик тоже похож? Колы я выросту - то хочу буты такым як я годные смайлы Поделиться сообщением Ссылка на сообщение
P0JIT0H #774 23 апреля 2013 ребят помогите плз, вот суть вводится текст(двумерным чаровским массивом офк) я знаю максимальное количество столбцов в каждой строчке, но не знаю количество строк с помощью какой функции можно расширять память выделяемую на строки по мере их ввода? Поделиться сообщением Ссылка на сообщение
rubish #775 23 апреля 2013 ребят помогите плз, вот суть вводится текст(двумерным чаровским массивом офк) я знаю максимальное количество столбцов в каждой строчке, но не знаю количество строк с помощью какой функции можно расширять память выделяемую на строки по мере их ввода?связанный список.или сразу выделяешь память на 10 строк, если появляется 11 - создаешь массив из 15 строк, потом 20 и так далее. ну и копируешь Колы я выросту - то хочу буты такым як я годные смайлы Поделиться сообщением Ссылка на сообщение
P0JIT0H #776 23 апреля 2013 ребят помогите плз, вот суть вводится текст(двумерным чаровским массивом офк) я знаю максимальное количество столбцов в каждой строчке, но не знаю количество строк с помощью какой функции можно расширять память выделяемую на строки по мере их ввода?связанный список.или сразу выделяешь память на 10 строк, если появляется 11 - создаешь массив из 15 строк, потом 20 и так далее. ну и копируешьа с помощью функций реалок малок и т.д разве не получится? просто не холотелось бы ещё ебаться с этими списками Поделиться сообщением Ссылка на сообщение
rubish #777 23 апреля 2013 а с помощью функций реалок малок и т.д разве не получится? просто не холотелось бы ещё ебаться с этими спискамиа чем тебе не нравится вариант с arraylist, когда ты при надобности выделяешь память на больший массив и свой копируешь туда? Колы я выросту - то хочу буты такым як я годные смайлы Поделиться сообщением Ссылка на сообщение
P0JIT0H #778 23 апреля 2013 (изменено) а с помощью функций реалок малок и т.д разве не получится? просто не холотелось бы ещё ебаться с этими спискамиа чем тебе не нравится вариант с arraylist, когда ты при надобности выделяешь память на больший массив и свой копируешь туда?спасибо, ща попробую разобраться, arraylist надеюсь не требует ни каких библиотек? Изменено 23 апреля 2013 пользователем P0JIT0H Поделиться сообщением Ссылка на сообщение
rubish #779 23 апреля 2013 а с помощью функций реалок малок и т.д разве не получится? просто не холотелось бы ещё ебаться с этими спискамиа чем тебе не нравится вариант с arraylist, когда ты при надобности выделяешь память на больший массив и свой копируешь туда?спасибо, ща попробую разобраться, arraylist надеюсь не требует ни каких библиотек?бля :) когда ты создаешь больший массив, когда твой старый закончился - это и есть arraylist Колы я выросту - то хочу буты такым як я годные смайлы Поделиться сообщением Ссылка на сообщение
P0JIT0H #780 23 апреля 2013 а с помощью функций реалок малок и т.д разве не получится? просто не холотелось бы ещё ебаться с этими спискамиа чем тебе не нравится вариант с arraylist, когда ты при надобности выделяешь память на больший массив и свой копируешь туда?спасибо, ща попробую разобраться, arraylist надеюсь не требует ни каких библиотек?бля :) когда ты создаешь больший массив, когда твой старый закончился - это и есть arraylistсори что туплю наверное)Если я тебя правильно понял создаю 2 массива, в первый записываю значение, потом увеличиваю размерность второго, переношу из первого значения во второй, и делаю тоже самое только наоборот и т.д?я правильно понял?) Поделиться сообщением Ссылка на сообщение