[ C / C++ ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. .::f-duck::.

    .::f-duck::. Member

    Joined:
    30 May 2009
    Messages:
    343
    Likes Received:
    32
    Reputations:
    7
    Что лучше? C++ или C#
    И в каком плане лучше?
     
  2. Fata1ex

    Fata1ex Elder - Старейшина

    Joined:
    12 Dec 2006
    Messages:
    703
    Likes Received:
    300
    Reputations:
    38
    Зависит от того, что ты хочешь получить. Что же?
    Каждый оптимален в своей области.

    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 минуты юзания гугла. Учимся использовать поиск :(
     
    #3202 Fata1ex, 23 Jun 2009
    Last edited: 23 Jun 2009
  3. _nic

    _nic Elder - Старейшина

    Joined:
    5 May 2006
    Messages:
    651
    Likes Received:
    54
    Reputations:
    3
    А можно из нескольких потоков работать с одним и тем жем указателем от ф-ции CreateFile ?
     
  4. razb

    razb Active Member

    Joined:
    24 Mar 2009
    Messages:
    658
    Likes Received:
    133
    Reputations:
    18
    Можно, только необходимо использовать мьютексы, условные переменные, etc. для предотвращения повреждения данных при одновременном обращении нескольких потоков.
     
  5. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    юзай параметр overlapped в функциях WriteFile и ReadFile. иначе добиться адекватной работы при многопоточности будет очень сложно.
     
    1 person likes this.
  6. mixkorshun

    mixkorshun Elder - Старейшина

    Joined:
    7 Sep 2008
    Messages:
    39
    Likes Received:
    4
    Reputations:
    0
    ПЛЗ! срочно..
    подскажите как в 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;
    }
    эти варианты у меня не прошли( первый то ясно, а второй доработать вроде как недолго уже..
     
  7. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    господи руки бы за такое отрывать. вроде делаешь на с++, но зачем же LPVOID то? Для этого делаешь абстрактный класс, если нада хранить элементы разных типов, и делаешь конкретный класс, наследованный от базового.
    а по поводу удаления - на сколько помню при выделении памяти в самой куче хранится информация о размере блока памяти, поэтому не пытайся наипать систему. делай делит для указателя и все. есесно это не проканает с двумерными (и более) массивами и получишь реки утекшей памяти.
     
  8. mixkorshun

    mixkorshun Elder - Старейшина

    Joined:
    7 Sep 2008
    Messages:
    39
    Likes Received:
    4
    Reputations:
    0
    Ra$cal
    не умничай! я спрашивал как мне прогу по другому прогу реализовать?!! реализуй мне без этого список с элементами переменной длины!! а?! вот по этому мне надо удалять длину n-го кол-ва байт, а вопрос в топ для новичков размещен только из за того что он по синтаксису! не надо учить меня структурам и.т.п. я тож не мало знаю
     
  9. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    нужна переменная длина - сделай класс-контейнер, который хранит указатель на блок памяти и длину блока. перегрузи оператор [] и *. но на чистом lpvoid ты ничего не сделаешь, кроме утечек памяти и гемора с отладкой.
    зы: еще раз говорю, размер блока памяти хранится в куче. нельзя удалить лишь часть блока. только delete p;
    запись delete [x] p; применима только в одном случае - если до этого был код p[x] = new blablabla; остальные вариации в лучшем случае или удалят весь блок или вообще ниче не удалят, а в худшем покоцают кучу и рано или поздно получишь необрабатываемую ошибку и падение программы.
     
  10. mixkorshun

    mixkorshun Elder - Старейшина

    Joined:
    7 Sep 2008
    Messages:
    39
    Likes Received:
    4
    Reputations:
    0
    Ra$cal
    смотри, сделана структура в которой 2указателя(на пред и след эл-т), и размер буфера данных, выделяю память под весь блок вместе сданными, расставляю указатели и копирую данные, но при этом этот выделенный блок не канает под структуру, только при преобразовании жестком(т.е. наложении), когда я удаляю эл-т то мне нужно этот эл-т удалить, зная адресс, размер...
     
  11. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    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;

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

    mixkorshun Elder - Старейшина

    Joined:
    7 Sep 2008
    Messages:
    39
    Likes Received:
    4
    Reputations:
    0
    Ra$cal
    мой код ИМХО корявый, т.к. на скорости, он выделяет память под все, накладывает структуру на начало, а данные копирует memcpy в конец... тоже работает, но удаляет с повреждением кучи... ИМХО данные рядом со структурой удобнее
     
  13. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    угу. запаришься отлаживать. юзай обычные решения. под скорость всегда проще и быстрее оптимизировать более простой код, нежели страшный но быстрый код привести к рабочему состоянию(не говоря про дальнейшую поддержку и исправление багов).
     
  14. bug1z

    bug1z Member

    Joined:
    7 May 2009
    Messages:
    61
    Likes Received:
    18
    Reputations:
    1
    РЕ адепты!
    помагайте!
    накопилась несколько вопросов по С++
    1)Какой ф-ей можно удалить скрытый в системе файл?
    писал:
    но не пашет..
    2) Дайте плз линку на хорошую статью по прботе с файлами в С++
    3) у меня в книге (С++ за 21 день) описано программирование под консоль, всё ок..но на сколько сложнее писать оконные приложения?
    4) где читать о работе с соетами на С++?
    Зарание спасибо!
     
  15. BrainDeaD

    BrainDeaD Elder - Старейшина

    Joined:
    9 Jun 2005
    Messages:
    774
    Likes Received:
    292
    Reputations:
    214
    3)с правильными инструментами не составляет большой сложности.
     
  16. Fata1ex

    Fata1ex Elder - Старейшина

    Joined:
    12 Dec 2006
    Messages:
    703
    Likes Received:
    300
    Reputations:
    38
    MSDN + GOOGLE творят чудеса!
     
  17. bug1z

    bug1z Member

    Joined:
    7 May 2009
    Messages:
    61
    Likes Received:
    18
    Reputations:
    1
    2BrainDeaD
    О каких инструментах идёт речь?
    О редакторе ресурсов?
    2Fata1ex
    вот только не надо меня к гуглу посылать..если бы я нашол ответы на свои вопросы то я б явно не постил их здесь!
     
    #3217 bug1z, 27 Jun 2009
    Last edited: 27 Jun 2009
  18. BrainDeaD

    BrainDeaD Elder - Старейшина

    Joined:
    9 Jun 2005
    Messages:
    774
    Likes Received:
    292
    Reputations:
    214
    Qt4 или арсенал Visual Studio

    1)чтоб убить скрытый файл нужно сначала поменять его аттрибут на нескрытый, а потом удалять.
    инфа здесь
     
    1 person likes this.
  19. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    Qt4 для новичка будет сложновато. Хотя и лучше чем mfc. но советую все таки начать с мфц.
     
  20. razb

    razb Active Member

    Joined:
    24 Mar 2009
    Messages:
    658
    Likes Received:
    133
    Reputations:
    18
    Ну мой совет будет с точностью наоборот )
    mfc очень неудобен в плане написание приложений да и вообще он уже умер (с) =) уж лучше юзать wtl. После перехода с mfc на Qt, сразу видно его преимущества в простоте иерархии всех его классов и взаимодействия обьектов. Ну это все имхо и доказывать тру mfc кодерам не буду ))

    Вообще следует попробывать и одно и другое и сделать для себя выводы )
     
Thread Status:
Not open for further replies.