ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование_OLD > С/С++, C#, Delphi, .NET, Asm
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #3231  
Старый 24.06.2009, 01:26
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме:
1354067

Репутация: 599


По умолчанию

нужна переменная длина - сделай класс-контейнер, который хранит указатель на блок памяти и длину блока. перегрузи оператор [] и *. но на чистом lpvoid ты ничего не сделаешь, кроме утечек памяти и гемора с отладкой.
зы: еще раз говорю, размер блока памяти хранится в куче. нельзя удалить лишь часть блока. только delete p;
запись delete [x] p; применима только в одном случае - если до этого был код p[x] = new blablabla; остальные вариации в лучшем случае или удалят весь блок или вообще ниче не удалят, а в худшем покоцают кучу и рано или поздно получишь необрабатываемую ошибку и падение программы.
 

  #3232  
Старый 24.06.2009, 02:01
mixkorshun
Познающий
Регистрация: 07.09.2008
Сообщений: 39
Провел на форуме:
78936

Репутация: 20
По умолчанию

Ra$cal
смотри, сделана структура в которой 2указателя(на пред и след эл-т), и размер буфера данных, выделяю память под весь блок вместе сданными, расставляю указатели и копирую данные, но при этом этот выделенный блок не канает под структуру, только при преобразовании жестком(т.е. наложении), когда я удаляю эл-т то мне нужно этот эл-т удалить, зная адресс, размер...
 

  #3233  
Старый 24.06.2009, 02:25
Ra$cal
Постоянный
Регистрация: 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;

теперь собсно вопрос - такого ли плана у тебя код. и второй вопрос - вот теперь опиши проблему с этим кодом. ибо не очень понятно о каких элементах у тебя речь - то ли о целом объекте структуры, то ли о блоке памяти, который хранится в указателе, то ли ты вообще делаешь типа обход всех объектов структуры, суммирование размеров, выделение одного большого куска памяти, распихивание в один блок всей инфы и настройка указателей в структурах. тогда уже можно будет понять что и как делать
 

  #3234  
Старый 24.06.2009, 02:44
mixkorshun
Познающий
Регистрация: 07.09.2008
Сообщений: 39
Провел на форуме:
78936

Репутация: 20
По умолчанию

Ra$cal
мой код ИМХО корявый, т.к. на скорости, он выделяет память под все, накладывает структуру на начало, а данные копирует memcpy в конец... тоже работает, но удаляет с повреждением кучи... ИМХО данные рядом со структурой удобнее
 

  #3235  
Старый 24.06.2009, 02:50
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме:
1354067

Репутация: 599


По умолчанию

угу. запаришься отлаживать. юзай обычные решения. под скорость всегда проще и быстрее оптимизировать более простой код, нежели страшный но быстрый код привести к рабочему состоянию(не говоря про дальнейшую поддержку и исправление багов).
 

  #3236  
Старый 27.06.2009, 23:06
bug1z
Познающий
Регистрация: 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) где читать о работе с соетами на С++?
Зарание спасибо!
 

  #3237  
Старый 27.06.2009, 23:09
BrainDeaD
Постоянный
Регистрация: 09.06.2005
Сообщений: 531
Провел на форуме:
3516666

Репутация: 439


По умолчанию

3)с правильными инструментами не составляет большой сложности.
 

  #3238  
Старый 27.06.2009, 23:11
Fata1ex
Постоянный
Регистрация: 12.12.2006
Сообщений: 906
Провел на форуме:
4205500

Репутация: 930


По умолчанию

MSDN + GOOGLE творят чудеса!
 

  #3239  
Старый 27.06.2009, 23:13
bug1z
Познающий
Регистрация: 07.05.2009
Сообщений: 64
Провел на форуме:
418218

Репутация: 59
По умолчанию

2BrainDeaD
О каких инструментах идёт речь?
О редакторе ресурсов?
2Fata1ex
вот только не надо меня к гуглу посылать..если бы я нашол ответы на свои вопросы то я б явно не постил их здесь!

Последний раз редактировалось bug1z; 27.06.2009 в 23:16..
 

  #3240  
Старый 27.06.2009, 23:19
BrainDeaD
Постоянный
Регистрация: 09.06.2005
Сообщений: 531
Провел на форуме:
3516666

Репутация: 439


По умолчанию

Цитата:
Сообщение от bug1z  
2BrainDeaD
О каких инструментах идёт речь?
О редакторе ресурсов?
Qt4 или арсенал Visual Studio

1)чтоб убить скрытый файл нужно сначала поменять его аттрибут на нескрытый, а потом удалять.
инфа здесь
 
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ