Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по программированию на C/С++

Автор: mbku
Дата сообщения: 19.09.2015 14:47
Garrett и suslovp спасибо
Автор: bearjrgm
Дата сообщения: 20.09.2015 21:43
Есть абстрактный базовый класс и есть другой класс, где используется массив указателей на него. Как решить проблему освобождения памяти? (до С++11, где нужно использовать std::unique_ptr ?)
Автор: Labutin
Дата сообщения: 20.09.2015 21:47
bearjrgm
Может я вопрос не понял.
Но в "другом классе" в деструкторе, пробегаем по массиву указателей и для каждого delete.
Не забыть потом освободить память под массив, если он тоже был динамически создан.
Автор: bearjrgm
Дата сообщения: 20.09.2015 23:07
Labutin
Правильно поняли. Спасибо.
А как не нарваться на ситуацию повторного удаления, в ситуации когда в разных ячейках массива может оказаться один и тот же указатель?
Удалять память не деструкторе, а в коде где выделялась память?
Автор: opencl26
Дата сообщения: 21.09.2015 01:47
хороший вопрос только ударение, не на "где", а на "как" ну и предлоги не пропускайте пожалуйста, а то не понятно, может вы послание "своим" пишите, а я влезаю
Автор: Igorr
Дата сообщения: 21.09.2015 03:09
bearjrgm

Цитата:
А как

Напр.:
1) сохранить указатель в переменной; пробежать весь массив на предмет равенства этому указателю: первый попавшийся равный указатель delete, остальные обнулить;
2) массив делать не указателей, а указателей на указатели - тогда достаточно удалить один нужный указатель и обнулить его.
Автор: GeorgeMame
Дата сообщения: 22.09.2015 14:21
В конце августа вышла новая версия компилятора С/С++ от Intel — 16.0. Наконец появилась опция компилятора, которая отключает оптимизацию, меняющую порядок суммирования (реассоциацию) для типов с плавающей точкой. Дело в том, что по стандартам С и С++, компилятор не обязан соблюдать приоритет для вычислений выражений в скобках. Например, далеко не факт, что сложение B и C в выражении A+(B+C) будет выполнено в первую очередь, что приводит к различиям в численных результатах.
Автор: Daniyar91
Дата сообщения: 23.09.2015 19:11
Я нечайно обнаружел, что названия тем
Вопросы по программированию на C/С++
Задачи по C/С++
написано кирилицей, причем просто Си - написано правильно, а Си сплюсами - нет. Вопрос, надо наверное исправить и написать латиницей, да? я спрашиваю, потому-что эти темы уже довно, но никто еще не исправил, может есть какой тайный смысл...
Автор: ItsJustMe
Дата сообщения: 23.09.2015 23:38
Видимо, от Google шифруются. Прием такой, часто используется чтобы никто не нашел. К примеру, тут движок форума на слово, к примеру, Windows рекламу вешает, а если так Windоws - то не вешает.
Автор: bearjrgm
Дата сообщения: 24.09.2015 00:33
Igorr
opencl26
спасибо, разобрался.
ЗЫ, сначала вопрос задал, потом нашел ответ
Автор: opencl26
Дата сообщения: 24.09.2015 01:08
bearjrgm
мне была интересна ситуация, когда нужно удалить память из кучи через free(указатель), но не знаешь, удалялась ли уже память, на которую он указывает, чтобы не вылез critical error, видимо нужно смотреть исходники malloc, calloc,realloc и free
но вообще конечно, если бы не кроссплатформенность, то ассемблер рулит для таких работ
Автор: Abs62
Дата сообщения: 24.09.2015 07:49
opencl26

Цитата:
мне была интересна ситуация, когда нужно удалить память из кучи через free(указатель), но не знаешь, удалялась ли уже память, на которую он указывает, чтобы не вылез critical error, видимо нужно смотреть исходники malloc, calloc,realloc и free

Зачем такие сложности? Есть же стандартный сишный принцип, освободил ресурс - обнули указатель. И всё сразу ясно будет.
Автор: opencl26
Дата сообщения: 24.09.2015 10:46
Abs62
ну в программировании вообще существует принцип не делать ошибки, тем не менее существуют assert и другие обработчики исключений, я исключительно в этом смысле интересовался
Автор: georgi485
Дата сообщения: 26.09.2015 14:59
Всем привет.
Предыстория. Учусь на заочке в техникуме связи. Есть предмет "Программирование", якобы изучаем язык Си. Якобы - потому что предмет всего один семестр и носит чисто ознакомительный характер, так как в дальнейшем до прикладного использования дело не дойдет. Преподаватель это понимает, потому к домашней контрольной работе дал код решения каждой задачи. Работа учащегося - оформить код, т.е. нарисовать блок-схему, подключить необходимые библиотеки, ввести переменные и вставить в фигурные скобки код, данный преподавателем. Далее проверить работу программы (сделать скриншоты работающей программы при запуске и на выходе). На этом работа учащегося закончена.

Суть вопроса - может ли кто помочь с составлением (читай - составить) необходимые блок-схемы?
Самому сделать - вариант, но придется штудировать методички и какую-никакую литературу по Си (давным-давно в школе были основы программирования на Бейсике под "Немигу", но уже давным-давно все улетучилось).
Заранее спасибо
Автор: vlary
Дата сообщения: 26.09.2015 17:49
georgi485
Цитата:
Есть предмет "Программирование", якобы изучаем язык Си
В учебных заведениях все предметы изучают "якобы".
Чтобы научить студентов думать и учиться самостоятельно, и они потом,
если им это понадобится в дальнейшей работе, смогли изучить сами уже серьезно.

Цитата:
Суть вопроса - может ли кто помочь с составлением (читай - составить) необходимые блок-схемы?
Здесь не пишут курсачи за других. Если не собираешься
дальше работать по специальности, и диплом нужен для проформы,
то в теме "Работа для программистов" можешь заказать себе курсач по сходной цене.
Автор: georgi485
Дата сообщения: 26.09.2015 20:32
vlary, так речь же не за курсач, а за составление блок-схем по уже готовому коду (пять-семь строк кода в каждой задаче), там работы на все про все на полчаса для знающего. Ну, если нет желающих помочь безвозмездно, буду сам. Спасибо за консультацию.
PS За специальность - я работая больше изучил, чем в технаре научат, а по некоторым практическим вопросам еще и преподов готов проконсультировать. Но требование такое - иметь отраслевое образование, а мое верхнее историческое далековато от связи.
Автор: GeorgeMame
Дата сообщения: 27.09.2015 18:31
скоро директива препроцессора #include в Visual Studio исчезнет с горизонта: http://habrahabr.ru/company/infopulse/blog/267781/
Автор: TeXpert
Дата сообщения: 15.10.2015 14:14
Вопрос знатокам

Есть простая программа
Код: /*
g++ ParallelTest.cpp -std=c++11                     // Windows
/opt/gcc-4.9.2/bin/g++ ParallelTest.cpp -pthread -std=c++11    // Linux
*/

#include <iostream>
#include <thread>

void hello(){
    std::cout << "Hello, parallel world!" << std::endl;
}

void Hi(int i){
    std::cout << "Hello, parallel world from " << i << "-th thread, with Id " << std::this_thread::get_id() << std::endl;
}

int main(){
std::thread t(hello);
t.join();
std::thread th1(Hi, 1);
th1.join();
std::thread th2(Hi, 2);
th2.join();
return 0;
}
Автор: ne_viens
Дата сообщения: 15.10.2015 20:10
После join'а нет больше потока, и ничто не мешает системе выделить тот же ID следующему потоку.
Автор: TeXpert
Дата сообщения: 15.10.2015 21:13
ne_viens
Понятно, спасибо. Надо подробности изучить
Автор: TeXpert
Дата сообщения: 16.10.2015 11:11
Еще вопрос: существуют ли в C++11 функции привязки потока к конкретному процессору, как в WinAPI? Или, хотя бы возвращающие идентификатор процессора (ядра). Чутье подсказывает, что, скорее всего, таких функций нет, но неужели в STL нет ничего подобного?


Спасибо
Автор: NeoAnomaly
Дата сообщения: 21.10.2015 07:34
TeXpert, можно получить хэндл потока std::thread::native_handle, а дальше WinApi.
Автор: TeXpert
Дата сообщения: 21.10.2015 09:20
NeoAnomaly
Цитата:
...а дальше WinApi
Меня интересуют решения в рамках стандарта
Автор: StillPhelix
Дата сообщения: 24.10.2015 21:22

Цитата:
Динамический массив - я понимаю vector из STL. Работать с ним очень просто и не надо ломать голову, что где-то я забыл высвободить память.

Если не критична скорость работы и размер программы. Если критично, то лучше через Win API.
Автор: Aktaf
Дата сообщения: 30.10.2015 18:45
Уважаемые господа, товарищи форумчане. Прошу помощь.
Мне для Виртуал Даба нужно английский сжатый текст как то разжать, поменять на русский и снова сжать. Файл в исходнике о лицензии.
Может я не совсем понимаю, есть файл - license.bin https://cloud.mail.ru/public/KpnF/9Bc3QAC1i - абракадабра.
Но, после компиляции он появляется в программе в читабельном виде.
Полный, соответствующий, читабельный текст вложен в исходники (рядом), в файле Copying - https://cloud.mail.ru/public/EeP8/8LmS2Py45

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

Мне думается, может еще помощь из исходника этот файл - license.cpp https://cloud.mail.ru/public/Erwe/HSs91MQo4
Вроде там что-то про сжатие есть, но, мне не зная анлийский и программирование не совладать.

Может нужно найти способ аналогично сжать полный русский текст лицензии, обозвать его как license.bin и компилировать?
Автор: akaGM
Дата сообщения: 30.10.2015 19:35
Aktaf

я думаю, в каком-нить .mak файле этот license.bin прописан: и от чего он зависит и как его собирать, так что там надо смотреть...
Автор: Aktaf
Дата сообщения: 30.10.2015 21:13
akaGM
У меня. не то что в исходнике, даже в компе подобных файлов нет.
Автор: akaGM
Дата сообщения: 30.10.2015 21:19
Aktaf

я думал ты ВиртуалДуб сам пересобраешь, а иначе на фига тебе всё это?
Автор: Aktaf
Дата сообщения: 30.10.2015 22:20
Да, свой вариант. Тем более, пока разработчик его покинул, скорее всего на совсем.
Ну и хочу перевести все что возможно. Возможно еще продолжу делать изменения.
Автор: akaGM
Дата сообщения: 30.10.2015 22:58
GPL переводить, на фига?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193

Предыдущая тема: не знаю как назвать тему :-)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.