![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| box |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 506 Регистрация: 27.2.2007 Репутация: нет Всего: 0 |
всем привет!
народ , помогите переделать функцию из с в с++ совместимую
просто когда компилю g++ сыпятся ошибки : ./nm_util.h:170:18: error: cannot initialize a variable of type 'const uint64_t *' (aka 'const unsigned long *') with an lvalue of type 'const void *' const uint64_t *src = _src; ^ ~~~~ ./nm_util.h:171:12: error: cannot initialize a variable of type 'uint64_t *' (aka 'unsigned long *') with an lvalue of type 'void *' uint64_t *dst = _dst; |
|||
|
||||
| kuzulis |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 154 Регистрация: 5.9.2007 Репутация: нет Всего: 1 |
#include <cstdint>
Ах, сорри, скорее всего надо просто кастить, читай про reinterpret_cast и пр. касты. Это сообщение отредактировал(а) kuzulis - 9.9.2013, 17:12 |
|||
|
||||
| feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 11 Всего: 45 |
C++ более требовательный к преобразованию типов, и по умолчанию void* не сводится к long*.
Можно в старом стиле просто написать:
либо более культурно воспользоваться static_cast. -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
| box |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 506 Регистрация: 27.2.2007 Репутация: нет Всего: 0 |
спасибо
а еще вопросик , там как я понимаю идет копирование данных из структуры в структуру , как унгичтожить данные по адресу src ? |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
box, если не секрет, а чем memcpy не подошел?
Что ты понимаешь под "уничтожить"? Освободить память или записать мусор? Если первое, то free(). |
|||
|
||||
| feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 11 Всего: 45 |
Очень мало информации Вы предоставили для ответа.
-------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
| box |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 506 Регистрация: 27.2.2007 Репутация: нет Всего: 0 |
дело имею с кольцевыми буферами netmap , напрямую освобождать память не получается free(rxring)
<jemalloc>: /usr/src/lib/libc/../../contrib/jemalloc/include/jemalloc/internal/arena.h:949: Failed assertion: "arena_mapbits_allocated_get(chunk, pageind) != 0" а если не освобождать память то буфер сетевой карты очень быстро переполняется... надо не заметно удалить все данные из слота ринг буфера даже и не знаю куда копать ... Добавлено через 12 минут и 32 секунды смотрите комент:
|
|||
|
||||
| akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 1 Всего: 5 |
написать в одну строку. это раз. И вообще, код забавный. Лучше это не переделывать -------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
| feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 11 Всего: 45 |
Ну, если не Вы лично эту память заказывали, то вполне понятно. С NETMAP, увы, не знаком. Поверхностное чтение ознакомительного мануала показала, что эти буферы не нуждаются в непосредственном высвобождении, так как созданы в разделяемой памяти. Тем не менее, как-то нужно дать знать драйверу, что этот буфер больше не используется. Как - не знаю. Этот вопрос лучше всего задать в этом разделе форума. -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
| box |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 506 Регистрация: 27.2.2007 Репутация: нет Всего: 0 |
всем спасибо , вопрос решен!
немножко через опу но работает , не виснет от переполнения буфера. странно , но иоцтл не работает почему то :
|
||||
|
|||||
| volatile |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
так побыстрее и побезопаснее будет, а то у вас нехорошо, например, длина данных должна быть обязательно кратна 64 байтам, иначе случится что-то очень некрасивое... |
||||
|
|||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
> длина данных должна быть обязательно кратна 64 байтам
Из названия ф-ции ИМХО следует, что так оно и д.б. > так побыстрее не факт -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
pkt_copy - да, тут и ежу ясно что именно 64 байтные блоки должны быть, и никак иначе. как это я не догадался... И кстати если делать копирование пакетами, то лучше уж передавать размер не в байтах, а кол-во пакетов. Вот тогда, физически невозможно будет передать нечетное число. (как бы там офигенно ясно функция не называлась memcpy - одна из наиболее оптимизированных функций CRT, написана на асме, с применением SSE впрочем да, не факт. Это сообщение отредактировал(а) volatile - 12.9.2013, 01:50 |
|||
|
||||
| ТарасАтавин |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 26.8.2013 Репутация: нет Всего: нет |
Поставь явное приведение типов указателей:
-------------------- Не так всё плохо, как оно есть на самом деле. |
||||
|
|||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |