ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

24.06.2009, 01:26
|
|
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме: 1354067
Репутация:
599
|
|
нужна переменная длина - сделай класс-контейнер, который хранит указатель на блок памяти и длину блока. перегрузи оператор [] и *. но на чистом lpvoid ты ничего не сделаешь, кроме утечек памяти и гемора с отладкой.
зы: еще раз говорю, размер блока памяти хранится в куче. нельзя удалить лишь часть блока. только delete p;
запись delete [x] p; применима только в одном случае - если до этого был код p[x] = new blablabla; остальные вариации в лучшем случае или удалят весь блок или вообще ниче не удалят, а в худшем покоцают кучу и рано или поздно получишь необрабатываемую ошибку и падение программы.
|
|
|

24.06.2009, 02:01
|
|
Познающий
Регистрация: 07.09.2008
Сообщений: 39
Провел на форуме: 78936
Репутация:
20
|
|
Ra$cal
смотри, сделана структура в которой 2указателя(на пред и след эл-т), и размер буфера данных, выделяю память под весь блок вместе сданными, расставляю указатели и копирую данные, но при этом этот выделенный блок не канает под структуру, только при преобразовании жестком(т.е. наложении), когда я удаляю эл-т то мне нужно этот эл-т удалить, зная адресс, размер...
|
|
|

24.06.2009, 02:25
|
|
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме: 1354067
Репутация:
599
|
|
struct item{
item* next;
item* prev;
LPVOID data;
int size;
};
выделять память под это добро так
item new_item = new item;
new_item.data = (LPVOID) new char[20];
new_item.size = 20;
удалять вроде сначала с data(хотя уже не помню, ибо оч давно не юзаю чистые указатели для таких целей, но вроде рекурсивно вызываться не будет удаление для всех полей структуры, только не задашь деструктор и в нем сделаешь освобождение памяти)
delete [] new_item.data;
delete new_item;
теперь собсно вопрос - такого ли плана у тебя код. и второй вопрос - вот теперь опиши проблему с этим кодом. ибо не очень понятно о каких элементах у тебя речь - то ли о целом объекте структуры, то ли о блоке памяти, который хранится в указателе, то ли ты вообще делаешь типа обход всех объектов структуры, суммирование размеров, выделение одного большого куска памяти, распихивание в один блок всей инфы и настройка указателей в структурах. тогда уже можно будет понять что и как делать
|
|
|

24.06.2009, 02:44
|
|
Познающий
Регистрация: 07.09.2008
Сообщений: 39
Провел на форуме: 78936
Репутация:
20
|
|
Ra$cal
мой код ИМХО корявый, т.к. на скорости, он выделяет память под все, накладывает структуру на начало, а данные копирует memcpy в конец... тоже работает, но удаляет с повреждением кучи... ИМХО данные рядом со структурой удобнее
|
|
|

24.06.2009, 02:50
|
|
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме: 1354067
Репутация:
599
|
|
угу. запаришься отлаживать. юзай обычные решения. под скорость всегда проще и быстрее оптимизировать более простой код, нежели страшный но быстрый код привести к рабочему состоянию(не говоря про дальнейшую поддержку и исправление багов).
|
|
|

27.06.2009, 23:06
|
|
Познающий
Регистрация: 07.05.2009
Сообщений: 64
Провел на форуме: 418218
Репутация:
59
|
|
РЕ адепты!
помагайте!
накопилась несколько вопросов по С++
1)Какой ф-ей можно удалить скрытый в системе файл?
писал:
#include <fstream>
#include <iostream>
#include < windows.h >
using namespace std;
int main()
{
DeleteFileA("C:\\boot.ini");
}
но не пашет..
2) Дайте плз линку на хорошую статью по прботе с файлами в С++
3) у меня в книге (С++ за 21 день) описано программирование под консоль, всё ок..но на сколько сложнее писать оконные приложения?
4) где читать о работе с соетами на С++?
Зарание спасибо!
|
|
|

27.06.2009, 23:09
|
|
Постоянный
Регистрация: 09.06.2005
Сообщений: 531
Провел на форуме: 3516666
Репутация:
439
|
|
3)с правильными инструментами не составляет большой сложности.
|
|
|

27.06.2009, 23:11
|
|
Постоянный
Регистрация: 12.12.2006
Сообщений: 906
Провел на форуме: 4205500
Репутация:
930
|
|
MSDN + GOOGLE творят чудеса!
|
|
|

27.06.2009, 23:13
|
|
Познающий
Регистрация: 07.05.2009
Сообщений: 64
Провел на форуме: 418218
Репутация:
59
|
|
2BrainDeaD
О каких инструментах идёт речь?
О редакторе ресурсов?
2Fata1ex
вот только не надо меня к гуглу посылать..если бы я нашол ответы на свои вопросы то я б явно не постил их здесь!
Последний раз редактировалось bug1z; 27.06.2009 в 23:16..
|
|
|

27.06.2009, 23:19
|
|
Постоянный
Регистрация: 09.06.2005
Сообщений: 531
Провел на форуме: 3516666
Репутация:
439
|
|
Сообщение от bug1z
2BrainDeaD
О каких инструментах идёт речь?
О редакторе ресурсов?
Qt4 или арсенал Visual Studio
1)чтоб убить скрытый файл нужно сначала поменять его аттрибут на нескрытый, а потом удалять.
инфа здесь
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|