Тут размещают свои топики новички в С/С++.

Тема в разделе "LANGS.C", создана пользователем nitrotoluol, 4 мар 2007.

  1. MirrorBlack

    MirrorBlack Алексей

    Публикаций:
    0
    Регистрация:
    21 июн 2008
    Сообщения:
    249
    Адрес:
    Moscow
    Booster
    Сейчас спрашиваю из праздного любопытства.
    А ваще это может потребоваться для моментального выделения памяти (без участия сервисов винды).
     
  2. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Только на этом сайте спрашивают такие вещи из праздного любопытства. Ну не работают в яву со стеком явно и точка. Яву для упрощения программирования. А память нужно выделять из хипа.
     
  3. MirrorBlack

    MirrorBlack Алексей

    Публикаций:
    0
    Регистрация:
    21 июн 2008
    Сообщения:
    249
    Адрес:
    Moscow
    Booster
    Все на JAVA!!! Шутка :)
    Дык этим ценен WASM. На многие вопросы только здесь можно получить нормальные ответы.
    Ну а откуда память выделять - дело вкуса и привычки.
     
  4. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Всё таки желательно это делать нормально, без извратов. Яву хороши тем, что позволяют больше сосредоточиться на задаче, нежели на деталях. Не стоит Си превращать в ассемблер, тогда уж лучше сразу писать на ассемблере. Я конечно понимаю, что здесь многие сначала изучали асм(как и я), а потом взялись за яву, но не надо мешать подходы.
     
  5. TSS

    TSS New Member

    Публикаций:
    0
    Регистрация:
    13 апр 2009
    Сообщения:
    494
    Полностью согласен с Booster.

    MirrorBlack
    Скорее дело недостаточного понимания зачем нужен стек и зачем нужна куча
     
  6. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    ну да, стоит задать вопрос - сразу прибежит куча народа и начнет говорить "а это зачем?" и "ты нифига не понимаешь"
     
  7. MirrorBlack

    MirrorBlack Алексей

    Публикаций:
    0
    Регистрация:
    21 июн 2008
    Сообщения:
    249
    Адрес:
    Moscow
    Booster
    Не вижу извратов.
    TSS
    А в чём Ваше понимание стека? Или по вашему туда только регистры и переменные на временное хранение можно складывать (ну и передача параметров)?
     
  8. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    MirrorBlack
    Поверь, это изврат, причём жестокий. И так скажет любой кто более-менее знает яву. А на производстве за такое сразу расстрел.
     
  9. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Где такое ещё более менее приемлемо, так это для выделения некоторого пула в стеке. То есть мы заранее выделили фиксированный массив, и далее юзаем его по своему усмотрению. Но явно работать со стеком это полный маразм.
     
  10. TSS

    TSS New Member

    Публикаций:
    0
    Регистрация:
    13 апр 2009
    Сообщения:
    494
    MirrorBlack
    Нет никаких по вашему, по нашему, есть просто базовые вещи которые нужно использовать по назначению.
    А вобще советую почитать, что есть FIFO, LIFO, что есть стек и вобще зачем его придумали.
     
  11. MirrorBlack

    MirrorBlack Алексей

    Публикаций:
    0
    Регистрация:
    21 июн 2008
    Сообщения:
    249
    Адрес:
    Moscow
    offtop
    Booster
    Странно, меня не расстреляли (сам работаю на производстве), а наоборот премию выписали 5000евро...
    Сейчас у меня всё управление станками (11 шт) и безбумажное производство (30 станций) написано на asm (активно используется выделение памяти в стеке). Более чем за год ни одного сбоя.
    P.S.
    В цифре я не ошибся :)
     
  12. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    MirrorBlack
    Ну что ж я рад за тебя. Смотря на каком производстве конечно. Где я раньше работал(телекоммуникации), если бы клиент потерял деньги из-за кривого софта, и обнаружилось бы, что там примерно такой код, уволили бы не раздумывая, и правильно бы сделали. А тебе я только могу позавидовать белой зависью.
     
  13. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    А где я сейчас работаю, тимлидами делается тщательное ревью кода. И ох как бы я тебе не позавидовал.
     
  14. diamond

    diamond New Member

    Публикаций:
    0
    Регистрация:
    21 май 2004
    Сообщения:
    507
    Адрес:
    Russia
    Выражаться это может в вылете программы с Access Violation.
    В стеке потока в Windows все страницы 4-килобайтовые.
    Каноническое руководство - Рихтер, глава о стеке потока. http://wm-help.net/books-online/book/59464/59464-9.html
    На васме этот эффект обсуждался, например, тут - https://wasm.ru/forum/viewtopic.php?pid=91700#p91700 .
     
  15. Xander

    Xander New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2009
    Сообщения:
    3
    Здравствуете, объясните мне пожалуйста вот эти строки

    Код (Text):
    1.            int ii = 0;
    2.     const char* pp = p;
    3.     while (*pp) ii = ii<<1 ^ *pp++;
    4.     if(ii < 0) ii = -ii;
    5.     ii %= TBLSZ
    а точнее вот эту строку
    Код (Text):
    1. while (*pp) ii = ii<<1 ^ *pp++;
    где const TBLSZ = 23; и обозначает размер массива ссылок на структуру
    p = указатель на массив символов

    Что в ней делается непонятно, над одной строкой думал минут 10-15

    Понятно, что:
    В цикле проходятся по строке на которую указывает p
    ii - "хэш код"
    x<<n эквивалентно умножению на 2 в степени n

    далее не понятно, распишите пожалуйста подробно пошагово, что делают операторы
    ii = ii<<1 ^ *pp++;

    Это из книги Страуструпа "Язык программирования С++", 76 страница
     
  16. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    Xander
    и далее результат xor-ится с текущим символом, на который указывает указатель pp.
    все это дело ложится в переменную ii.
    и так для каждой буквы строки
     
  17. Xander

    Xander New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2009
    Сообщения:
    3
    Xander
    получается ii умножается на 2 в 1-й степени, и затем результат сравнивается с кодом символа в pp и если они не ровны, то что заносится в ii? 2?, а если ровны , что заноится?
    зачем умножать все время ii на 2 в первой степени?
     
  18. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    Xander
    операция ^ действует побитово. проиграй эти примеры на калькуляторе.
    если подскажешь главу и раздел книги Страуструпа поточнее, где фигурирует этот пример кода -- постараюсь помочь.
     
  19. Ins3t

    Ins3t New Member

    Публикаций:
    0
    Регистрация:
    24 июл 2009
    Сообщения:
    40
    Добрый день.
    Взялся я за ВинАпи (страшная вещь), если не сложно, можете показать пример программы на С++, которая будет использовать свакупность таких ф-й как CreateWindow и GetDlgItemTextA.
    Зарание благодарен.
     
  20. Xander

    Xander New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2009
    Сообщения:
    3
    varnie
    Спасибо, давно разобрался с этим куском и этой ф-ей, в этом цикле автор просто формировал случайное число :), потому как далее он получал остаток от деления сформированного числа, на размер массива.

    Долго не отвечал, wasm не грузился.