Зависит от того, что ты хочешь получить. Что же? Каждый оптимален в своей области. Code: http://ru.wikipedia.org/wiki/%D0%A1%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F http://www.imho.ws/archive/index.php?t-86747.html http://www.cyberforum.ru/programming-theory/thread12269.html http://www.nuclex.org/pages/csharp-vs-cxx-performance ps Это я нашел буквально за 2 минуты юзания гугла. Учимся использовать поиск
Можно, только необходимо использовать мьютексы, условные переменные, etc. для предотвращения повреждения данных при одновременном обращении нескольких потоков.
юзай параметр overlapped в функциях WriteFile и ReadFile. иначе добиться адекватной работы при многопоточности будет очень сложно.
ПЛЗ! срочно.. подскажите как в c++ удалить указатель(LPVOID void*), размер котрого cbSize Code: void FIFOList::DeleteItem(LPVOID pItem){ delete pItem; } Code: void FIFOList::DeleteItem(LPVOID pItem){ char* pTemp; pTemp = (char*)pItem; delete[szSize] pTemp; } эти варианты у меня не прошли( первый то ясно, а второй доработать вроде как недолго уже..
господи руки бы за такое отрывать. вроде делаешь на с++, но зачем же LPVOID то? Для этого делаешь абстрактный класс, если нада хранить элементы разных типов, и делаешь конкретный класс, наследованный от базового. а по поводу удаления - на сколько помню при выделении памяти в самой куче хранится информация о размере блока памяти, поэтому не пытайся наипать систему. делай делит для указателя и все. есесно это не проканает с двумерными (и более) массивами и получишь реки утекшей памяти.
Ra$cal не умничай! я спрашивал как мне прогу по другому прогу реализовать?!! реализуй мне без этого список с элементами переменной длины!! а?! вот по этому мне надо удалять длину n-го кол-ва байт, а вопрос в топ для новичков размещен только из за того что он по синтаксису! не надо учить меня структурам и.т.п. я тож не мало знаю
нужна переменная длина - сделай класс-контейнер, который хранит указатель на блок памяти и длину блока. перегрузи оператор [] и *. но на чистом lpvoid ты ничего не сделаешь, кроме утечек памяти и гемора с отладкой. зы: еще раз говорю, размер блока памяти хранится в куче. нельзя удалить лишь часть блока. только delete p; запись delete [x] p; применима только в одном случае - если до этого был код p[x] = new blablabla; остальные вариации в лучшем случае или удалят весь блок или вообще ниче не удалят, а в худшем покоцают кучу и рано или поздно получишь необрабатываемую ошибку и падение программы.
Ra$cal смотри, сделана структура в которой 2указателя(на пред и след эл-т), и размер буфера данных, выделяю память под весь блок вместе сданными, расставляю указатели и копирую данные, но при этом этот выделенный блок не канает под структуру, только при преобразовании жестком(т.е. наложении), когда я удаляю эл-т то мне нужно этот эл-т удалить, зная адресс, размер...
struct item{ item* next; item* prev; LPVOID data; int size; }; выделять память под это добро так item new_item = new item; new_item.data = (LPVOID) new char[20]; new_item.size = 20; удалять вроде сначала с data(хотя уже не помню, ибо оч давно не юзаю чистые указатели для таких целей, но вроде рекурсивно вызываться не будет удаление для всех полей структуры, только не задашь деструктор и в нем сделаешь освобождение памяти) delete [] new_item.data; delete new_item; теперь собсно вопрос - такого ли плана у тебя код. и второй вопрос - вот теперь опиши проблему с этим кодом. ибо не очень понятно о каких элементах у тебя речь - то ли о целом объекте структуры, то ли о блоке памяти, который хранится в указателе, то ли ты вообще делаешь типа обход всех объектов структуры, суммирование размеров, выделение одного большого куска памяти, распихивание в один блок всей инфы и настройка указателей в структурах. тогда уже можно будет понять что и как делать
Ra$cal мой код ИМХО корявый, т.к. на скорости, он выделяет память под все, накладывает структуру на начало, а данные копирует memcpy в конец... тоже работает, но удаляет с повреждением кучи... ИМХО данные рядом со структурой удобнее
угу. запаришься отлаживать. юзай обычные решения. под скорость всегда проще и быстрее оптимизировать более простой код, нежели страшный но быстрый код привести к рабочему состоянию(не говоря про дальнейшую поддержку и исправление багов).
РЕ адепты! помагайте! накопилась несколько вопросов по С++ 1)Какой ф-ей можно удалить скрытый в системе файл? писал: но не пашет.. 2) Дайте плз линку на хорошую статью по прботе с файлами в С++ 3) у меня в книге (С++ за 21 день) описано программирование под консоль, всё ок..но на сколько сложнее писать оконные приложения? 4) где читать о работе с соетами на С++? Зарание спасибо!
2BrainDeaD О каких инструментах идёт речь? О редакторе ресурсов? 2Fata1ex вот только не надо меня к гуглу посылать..если бы я нашол ответы на свои вопросы то я б явно не постил их здесь!
Qt4 или арсенал Visual Studio 1)чтоб убить скрытый файл нужно сначала поменять его аттрибут на нескрытый, а потом удалять. инфа здесь
Ну мой совет будет с точностью наоборот ) mfc очень неудобен в плане написание приложений да и вообще он уже умер (с) =) уж лучше юзать wtl. После перехода с mfc на Qt, сразу видно его преимущества в простоте иерархии всех его классов и взаимодействия обьектов. Ну это все имхо и доказывать тру mfc кодерам не буду )) Вообще следует попробывать и одно и другое и сделать для себя выводы )