memcpy

Тема в разделе "LANGS.C", создана пользователем GoldFinch, 5 июл 2009.

  1. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    Booster
    ты предыдущий пост читал? у меня функция копирования в буфер любых типов, их ВСЕ можно копировать memcpy, а некоторые (арифметические) можно еще и присваиванием,
    вот я и хочу знать, даст чтото это присваивание, или можно только memcpy
     
  2. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Читал, но зачем это не понял. Я бы привёл указатель на буфер и присвоил. ^)
     
  3. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    Booster
    Код (Text):
    1.     template<typename charT>
    2.     void save(const std::basic_string<charT>& t)
    3.     {...}
    тут ты тоже привел бы и присвоил?
     
  4. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    GoldFinch
    А как ты это с помощью memcpy скопируешь? Не путай меня.
     
  5. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    Код (Text):
    1. template<typename charT>
    2. void save(const std::basic_string<charT>& t)
    3. {
    4.     memcpy(buf,t.c_str(),(t.size()+1)*sizeof(charT));
    5. }
     
  6. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    И зачем эта байда?
     
  7. Sol_Ksacap

    Sol_Ksacap Миша

    Публикаций:
    0
    Регистрация:
    6 мар 2008
    Сообщения:
    623
    GoldFinch
    Один оставлял бы только memcopy. Соптимизируют – хорошо, а нет – так 4-8 байт и через memcpy быстро пролезут, ага. Особенно на фоне теперешнего количества пухлософта, агрхъ.
     
  8. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    те уже говорили, ты не про то пишешь
     
  9. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    И всё-таки, зачем строки копировать memcpy? Очень странно.
     
  10. GoldFinch

    GoldFinch New Member

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

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    GoldFinch
    По-твоему строки копировать с помощью memcpy это нормально?
     
  12. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    Booster
    флуд ниочем
    да, нормально.
     
  13. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    По-моему эта тема изначально флуд. Юзай дальше для строк memcpy.
     
  14. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    У Александреску описан способ определения, является тип стандартным или нет.
     
  15. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    Booster
    пост #26 посмотри, 1й сверху страницы
     
  16. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Ну ты немеряно крут. Ты хочешь, чтобы сказали есть ли в стандарте пункт о замене memcpy присваиванием? ^) Я лично такого не видел.
     
  17. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    Booster
    я насчет твоей фразы "У Александреску описан способ определения, является тип стандартным или нет."
    у меня для этого boost::type_traits+boost::mpl используется
     
  18. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    GoldFinch
    Да понял я, вроде не тупой. Тут такая история, что вообще нет гарантий во что это преобразуется. Как я уже писал, присваивание может преобразоваться в memcpy. Гарантировать может только ассемблерная вставка.
     
  19. reversecode

    reversecode Guest

    Публикаций:
    0
    наскоко я знаю это оптимизация компилятора
    тоесть если ее выключить то будет везде memcpy
     
  20. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    Непосредственный вызов memcpy - лишняя трата производительности.