Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
#1

Обнулить кусок памяти (выделенной под указатели) по быстрому - C++

23.03.2013, 12:46. Просмотров 618. Ответов 3
Метки нет (Все метки)

Есть хеш-таблица и есть кусок памяти под неё, нужно занулить изначально весь кусок памяти, но как можно быстрее, те хорошо бы использовать что-то из стандартных функций с asm вставками, как вот memcpy например.
Другое дело что у меня не получааеться это сделать:
C++
1
2
3
4
5
        Element** hashTable = new Element*[8195];
        for(int i=0;i<8195/4;i++)
            hashTable[i] = 0;
        memcpy(&hashTable+8195/4,&hashTable,8195/4);//ошибка
        memcpy(&hashTable+8195/2,&hashTable,8195/2);
Как видите не хочет она занулять всё это дело таким образом, ей подавай данные, а не нули
Из доступных для подключения библиотек только эти:
C++
1
2
3
4
5
6
#include <iostream>
#include <iomanip>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cstdio>
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.03.2013, 12:46     Обнулить кусок памяти (выделенной под указатели) по быстрому
Посмотрите здесь:

Корректно ли освобождение выделенной памяти? C++
C++ Освобождение памяти, выделенной под массив
Динамические массивы и экстремум выделенной памяти C++
C++ Функция не видит выделенной памяти под глобальные переменные
C++ Массив: Освобождение выделенной памяти
C++ Косвенное обращение к методам. Освобождение памяти,выделенной под двумерный динамический массив
C++ Мусор в памяти, выделенной динамически
Как преобразовать кусок памяти в stringstream? C++
C++ Как обнулить указатель на одну ячейку в динамически-выделенной памяти?
C++ Освобождение памяти, выделенной через new
Удаление выделенной памяти C++
Выход за границу выделенной памяти C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NoMasters
Псевдослучайный
1744 / 1087 / 71
Регистрация: 13.09.2011
Сообщений: 3,113
23.03.2013, 13:37     Обнулить кусок памяти (выделенной под указатели) по быстрому #2
memset. И да, вы что-то очень странное делаете в приведённом куске кода.
Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
23.03.2013, 14:04     Обнулить кусок памяти (выделенной под указатели) по быстрому #3
Это зануление при инициализации.
C++
1
Element** hashTable = new Element*[8195]();
Это если понадобится после инициализации:
C++
1
memset( hashTable, 0, sizeof( hashTable ) * 8195 );
Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
25.03.2013, 19:53  [ТС]     Обнулить кусок памяти (выделенной под указатели) по быстрому #4
Toshkarik, а, спасибо, забыл о memset.
NoMasters, угу, странное, пытался скопировать нули копированием куска памяти, но не тут то было
Yandex
Объявления
25.03.2013, 19:53     Обнулить кусок памяти (выделенной под указатели) по быстрому
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru