Что бы почитать про выделение памяти

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _nic, 9 Apr 2009.

  1. _nic

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

    Joined:
    5 May 2006
    Messages:
    651
    Likes Received:
    54
    Reputations:
    3
    Подскажите какую то доступную онлайн литературу.В которой были бы описано как правильно выделять память в куче(и в мультипоточных приложениях то же) ,какие бывают причины повреждения стека или кучи,как выявить повреждение кучи.Вообщем на такую вот тему.
     
  2. LEE_ROY

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

    Joined:
    9 Nov 2006
    Messages:
    450
    Likes Received:
    188
    Reputations:
    26
    http://www.codersource.net/c++_dynamic_memory_allocation.aspx - english, внизу еще пара ссылок на мемори корапшн, тобиж повреждение .. вообще такая шняга в книгах по языку должна быть..
     
  3. _nic

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

    Joined:
    5 May 2006
    Messages:
    651
    Likes Received:
    54
    Reputations:
    3
    А по серьезней есть литература?
     
  4. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    http://wasm.ru/publist.php?list=21#series_10

    еще помню очупенную статью находил типа "организация памяти в win 3.11" найти не могу...
     
    _________________________
  5. razb

    razb Active Member

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

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

    Joined:
    5 May 2006
    Messages:
    651
    Likes Received:
    54
    Reputations:
    3
    Если есть потоки связанные с ГУИ и обращяющиеся к глобальным переменным выделенным в куче,то чаще всего такая ситуация заканчивается повреждением содержимого кучи :(
     
  7. razb

    razb Active Member

    Joined:
    24 Mar 2009
    Messages:
    658
    Likes Received:
    133
    Reputations:
    18
    Как я написал выше в такой ситуацие используются мьютексы, которые блокируют данные и разрешают доступ только одному потоку который их захватил в это время. Можешь погуглить на эту тему в инете море инфы
     
  8. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    Читай про "критические секции"... таже помню некоторые стандартные API функции типа LocalLock (http://www.podgoretsky.com/ftp/Docs/Delphi/Memory/old/LocalLock.html - там внизу есть ссылки очень полезные на доки...)

    как сказал razb многопоточность надо синхронизировать. Читай про EVENT-ты (CreateEvent, SetEvent, WaitForSingleObject)
     
    _________________________
  9. _nic

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

    Joined:
    5 May 2006
    Messages:
    651
    Likes Received:
    54
    Reputations:
    3
    Синхронизация к сожалению не всегда помагает.