Garrett и suslovp спасибо
» Вопросы по программированию на C/С++
Есть абстрактный базовый класс и есть другой класс, где используется массив указателей на него. Как решить проблему освобождения памяти? (до С++11, где нужно использовать std::unique_ptr ?)
bearjrgm
Может я вопрос не понял.
Но в "другом классе" в деструкторе, пробегаем по массиву указателей и для каждого delete.
Не забыть потом освободить память под массив, если он тоже был динамически создан.
Может я вопрос не понял.
Но в "другом классе" в деструкторе, пробегаем по массиву указателей и для каждого delete.
Не забыть потом освободить память под массив, если он тоже был динамически создан.
Labutin
Правильно поняли. Спасибо.
А как не нарваться на ситуацию повторного удаления, в ситуации когда в разных ячейках массива может оказаться один и тот же указатель?
Удалять память не деструкторе, а в коде где выделялась память?
Правильно поняли. Спасибо.
А как не нарваться на ситуацию повторного удаления, в ситуации когда в разных ячейках массива может оказаться один и тот же указатель?
Удалять память не деструкторе, а в коде где выделялась память?
хороший вопрос только ударение, не на "где", а на "как" ну и предлоги не пропускайте пожалуйста, а то не понятно, может вы послание "своим" пишите, а я влезаю
bearjrgm
Цитата:
Напр.:
1) сохранить указатель в переменной; пробежать весь массив на предмет равенства этому указателю: первый попавшийся равный указатель delete, остальные обнулить;
2) массив делать не указателей, а указателей на указатели - тогда достаточно удалить один нужный указатель и обнулить его.
Цитата:
А как
Напр.:
1) сохранить указатель в переменной; пробежать весь массив на предмет равенства этому указателю: первый попавшийся равный указатель delete, остальные обнулить;
2) массив делать не указателей, а указателей на указатели - тогда достаточно удалить один нужный указатель и обнулить его.
В конце августа вышла новая версия компилятора С/С++ от Intel — 16.0. Наконец появилась опция компилятора, которая отключает оптимизацию, меняющую порядок суммирования (реассоциацию) для типов с плавающей точкой. Дело в том, что по стандартам С и С++, компилятор не обязан соблюдать приоритет для вычислений выражений в скобках. Например, далеко не факт, что сложение B и C в выражении A+(B+C) будет выполнено в первую очередь, что приводит к различиям в численных результатах.
Я нечайно обнаружел, что названия тем
Вопросы по программированию на C/С++
Задачи по C/С++
написано кирилицей, причем просто Си - написано правильно, а Си сплюсами - нет. Вопрос, надо наверное исправить и написать латиницей, да? я спрашиваю, потому-что эти темы уже довно, но никто еще не исправил, может есть какой тайный смысл...
Вопросы по программированию на C/С++
Задачи по C/С++
написано кирилицей, причем просто Си - написано правильно, а Си сплюсами - нет. Вопрос, надо наверное исправить и написать латиницей, да? я спрашиваю, потому-что эти темы уже довно, но никто еще не исправил, может есть какой тайный смысл...
Видимо, от Google шифруются. Прием такой, часто используется чтобы никто не нашел. К примеру, тут движок форума на слово, к примеру, Windows рекламу вешает, а если так Windоws - то не вешает.
Igorr
opencl26
спасибо, разобрался.
ЗЫ, сначала вопрос задал, потом нашел ответ
opencl26
спасибо, разобрался.
ЗЫ, сначала вопрос задал, потом нашел ответ
bearjrgm
мне была интересна ситуация, когда нужно удалить память из кучи через free(указатель), но не знаешь, удалялась ли уже память, на которую он указывает, чтобы не вылез critical error, видимо нужно смотреть исходники malloc, calloc,realloc и free
но вообще конечно, если бы не кроссплатформенность, то ассемблер рулит для таких работ
мне была интересна ситуация, когда нужно удалить память из кучи через free(указатель), но не знаешь, удалялась ли уже память, на которую он указывает, чтобы не вылез critical error, видимо нужно смотреть исходники malloc, calloc,realloc и free
но вообще конечно, если бы не кроссплатформенность, то ассемблер рулит для таких работ
opencl26
Цитата:
Зачем такие сложности? Есть же стандартный сишный принцип, освободил ресурс - обнули указатель. И всё сразу ясно будет.
Цитата:
мне была интересна ситуация, когда нужно удалить память из кучи через free(указатель), но не знаешь, удалялась ли уже память, на которую он указывает, чтобы не вылез critical error, видимо нужно смотреть исходники malloc, calloc,realloc и free
Зачем такие сложности? Есть же стандартный сишный принцип, освободил ресурс - обнули указатель. И всё сразу ясно будет.
Abs62
ну в программировании вообще существует принцип не делать ошибки, тем не менее существуют assert и другие обработчики исключений, я исключительно в этом смысле интересовался
ну в программировании вообще существует принцип не делать ошибки, тем не менее существуют assert и другие обработчики исключений, я исключительно в этом смысле интересовался
Всем привет.
Предыстория. Учусь на заочке в техникуме связи. Есть предмет "Программирование", якобы изучаем язык Си. Якобы - потому что предмет всего один семестр и носит чисто ознакомительный характер, так как в дальнейшем до прикладного использования дело не дойдет. Преподаватель это понимает, потому к домашней контрольной работе дал код решения каждой задачи. Работа учащегося - оформить код, т.е. нарисовать блок-схему, подключить необходимые библиотеки, ввести переменные и вставить в фигурные скобки код, данный преподавателем. Далее проверить работу программы (сделать скриншоты работающей программы при запуске и на выходе). На этом работа учащегося закончена.
Суть вопроса - может ли кто помочь с составлением (читай - составить) необходимые блок-схемы?
Самому сделать - вариант, но придется штудировать методички и какую-никакую литературу по Си (давным-давно в школе были основы программирования на Бейсике под "Немигу", но уже давным-давно все улетучилось).
Заранее спасибо
Предыстория. Учусь на заочке в техникуме связи. Есть предмет "Программирование", якобы изучаем язык Си. Якобы - потому что предмет всего один семестр и носит чисто ознакомительный характер, так как в дальнейшем до прикладного использования дело не дойдет. Преподаватель это понимает, потому к домашней контрольной работе дал код решения каждой задачи. Работа учащегося - оформить код, т.е. нарисовать блок-схему, подключить необходимые библиотеки, ввести переменные и вставить в фигурные скобки код, данный преподавателем. Далее проверить работу программы (сделать скриншоты работающей программы при запуске и на выходе). На этом работа учащегося закончена.
Суть вопроса - может ли кто помочь с составлением (читай - составить) необходимые блок-схемы?
Самому сделать - вариант, но придется штудировать методички и какую-никакую литературу по Си (давным-давно в школе были основы программирования на Бейсике под "Немигу", но уже давным-давно все улетучилось).
Заранее спасибо
georgi485
Цитата:
Чтобы научить студентов думать и учиться самостоятельно, и они потом,
если им это понадобится в дальнейшей работе, смогли изучить сами уже серьезно.
Цитата:
дальше работать по специальности, и диплом нужен для проформы,
то в теме "Работа для программистов" можешь заказать себе курсач по сходной цене.
Цитата:
Есть предмет "Программирование", якобы изучаем язык СиВ учебных заведениях все предметы изучают "якобы".
Чтобы научить студентов думать и учиться самостоятельно, и они потом,
если им это понадобится в дальнейшей работе, смогли изучить сами уже серьезно.
Цитата:
Суть вопроса - может ли кто помочь с составлением (читай - составить) необходимые блок-схемы?Здесь не пишут курсачи за других. Если не собираешься
дальше работать по специальности, и диплом нужен для проформы,
то в теме "Работа для программистов" можешь заказать себе курсач по сходной цене.
vlary, так речь же не за курсач, а за составление блок-схем по уже готовому коду (пять-семь строк кода в каждой задаче), там работы на все про все на полчаса для знающего. Ну, если нет желающих помочь безвозмездно, буду сам. Спасибо за консультацию.
PS За специальность - я работая больше изучил, чем в технаре научат, а по некоторым практическим вопросам еще и преподов готов проконсультировать. Но требование такое - иметь отраслевое образование, а мое верхнее историческое далековато от связи.
PS За специальность - я работая больше изучил, чем в технаре научат, а по некоторым практическим вопросам еще и преподов готов проконсультировать. Но требование такое - иметь отраслевое образование, а мое верхнее историческое далековато от связи.
скоро директива препроцессора #include в Visual Studio исчезнет с горизонта: http://habrahabr.ru/company/infopulse/blog/267781/
Вопрос знатокам
Есть простая программа
Код: /*
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;
}
Есть простая программа
Код: /*
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;
}
После join'а нет больше потока, и ничто не мешает системе выделить тот же ID следующему потоку.
ne_viens
Понятно, спасибо. Надо подробности изучить
Понятно, спасибо. Надо подробности изучить
Еще вопрос: существуют ли в C++11 функции привязки потока к конкретному процессору, как в WinAPI? Или, хотя бы возвращающие идентификатор процессора (ядра). Чутье подсказывает, что, скорее всего, таких функций нет, но неужели в STL нет ничего подобного?
Спасибо
Спасибо
TeXpert, можно получить хэндл потока std::thread::native_handle, а дальше WinApi.
NeoAnomaly
Цитата:
Цитата:
...а дальше WinApiМеня интересуют решения в рамках стандарта
Цитата:
Динамический массив - я понимаю vector из STL. Работать с ним очень просто и не надо ломать голову, что где-то я забыл высвободить память.
Если не критична скорость работы и размер программы. Если критично, то лучше через Win API.
Уважаемые господа, товарищи форумчане. Прошу помощь.
Мне для Виртуал Даба нужно английский сжатый текст как то разжать, поменять на русский и снова сжать. Файл в исходнике о лицензии.
Может я не совсем понимаю, есть файл - 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 и компилировать?
Мне для Виртуал Даба нужно английский сжатый текст как то разжать, поменять на русский и снова сжать. Файл в исходнике о лицензии.
Может я не совсем понимаю, есть файл - 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 и компилировать?
Aktaf
я думаю, в каком-нить .mak файле этот license.bin прописан: и от чего он зависит и как его собирать, так что там надо смотреть...
я думаю, в каком-нить .mak файле этот license.bin прописан: и от чего он зависит и как его собирать, так что там надо смотреть...
akaGM
У меня. не то что в исходнике, даже в компе подобных файлов нет.
У меня. не то что в исходнике, даже в компе подобных файлов нет.
Aktaf
я думал ты ВиртуалДуб сам пересобраешь, а иначе на фига тебе всё это?
я думал ты ВиртуалДуб сам пересобраешь, а иначе на фига тебе всё это?
Да, свой вариант. Тем более, пока разработчик его покинул, скорее всего на совсем.
Ну и хочу перевести все что возможно. Возможно еще продолжу делать изменения.
Ну и хочу перевести все что возможно. Возможно еще продолжу делать изменения.
GPL переводить, на фига?
Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
Предыдущая тема: не знаю как назвать тему :-)
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.