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

Таинственный тип void - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Затирание изображения. http://www.cyberforum.ru/cpp-beginners/thread322433.html
Программа выводит текст из файла в графическом режиме,и осуществляет скроллинг при помощи клавиш WASD,подскажите как осуществить затирание предыдущей позиции строк,чтобы при перемещении строк...
C++ Создание игры и софта Скажите пожалуйста какие книги можете порекомендовать на с++ я хочу написать игру в шахматы для виндоус но не знаю с чего начать код то я писать начал а как реализовать к примеру доску фигурки кнопки... http://www.cyberforum.ru/cpp-beginners/thread322419.html
C++ Сумма и разность чисел, представленных в виде bitset
Доброго времени суток. Реализую блочный алгоритм шифрования, в котором необходимо наличие операций сложения и вычитания чисел разрядностью 16 бит, а так же взятие по модулю 2^16 от суммы/разности....
C++ ошибка в шифровании
Пытаюсь сделать шифрование через SLL, проблема в том, что если задавать строку для шифрования большую, то строка обрезается (маленькие строки нормально работают). Помогите разобраться что и где я...
C++ Экспоненциальная функция http://www.cyberforum.ru/cpp-beginners/thread322413.html
Добрый день, необходимо запрограммировать функцию 1-exp(-at) Основной вопрос как описать экспоненту ? Простенькие задачки без экспоненты разобрался как сделать, а вот когда добавляю exp в...
C++ не могу разобраться с typedef помогите разобраться typedef задает синоним типа только? например: typedef int myint; тут понятно все, вместо int можно писать myint а если написать подробнее

Показать сообщение отдельно
xAtom
915 / 740 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
19.06.2011, 12:31
Ничего здесь нет правильного тип void* это не типизированная куча байтов, в твоём примере ты выделил только три байта и причём тут массив ты записываешь в некуда, вот и при удаление может возникнуть ошибка, для этого нужно делать так, метод delete он основываеться на принятие типа void* - адреса памяти для удаления, вот правильный способ применение твоей задачи:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void**  mas = new void*[3];
mas[0] = new int(17);
mas[1] = new char('q');
mas[2] = new bool(true);
 
cout << *(int*) mas[0] << endl;
cout << *(char*) mas[1] << endl;
cout << *(bool*) mas[2] << endl;
 
for(int i = 0; i < 3; i++) 
    delete mas[i];
delete[] mas;
mas = NULL;
Ничего тут тайнственного нету в этом типе, наоборот универсальный тип, пока в С++ не стали использовать шаблоны template<typename>, единственным решением в С для передачи разных типов использовать void*
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru