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

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

Восстановить пароль Регистрация
 
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,508
23.03.2013, 12:46     Обнулить кусок памяти (выделенной под указатели) по быстрому #1
Есть хеш-таблица и есть кусок памяти под неё, нужно занулить изначально весь кусок памяти, но как можно быстрее, те хорошо бы использовать что-то из стандартных функций с 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++ Мусор в памяти, выделенной динамически
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NoMasters
Псевдослучайный
1737 / 1080 / 69
Регистрация: 13.09.2011
Сообщений: 3,093
23.03.2013, 13:37     Обнулить кусок памяти (выделенной под указатели) по быстрому #2
memset. И да, вы что-то очень странное делаете в приведённом куске кода.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
23.03.2013, 14:04     Обнулить кусок памяти (выделенной под указатели) по быстрому #3
Это зануление при инициализации.
C++
1
Element** hashTable = new Element*[8195]();
Это если понадобится после инициализации:
C++
1
memset( hashTable, 0, sizeof( hashTable ) * 8195 );
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,508
25.03.2013, 19:53  [ТС]     Обнулить кусок памяти (выделенной под указатели) по быстрому #4
Toshkarik, а, спасибо, забыл о memset.
NoMasters, угу, странное, пытался скопировать нули копированием куска памяти, но не тут то было
Yandex
Объявления
25.03.2013, 19:53     Обнулить кусок памяти (выделенной под указатели) по быстрому
Ответ Создать тему
Опции темы

Текущее время: 14:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru