Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Обнуление указателя в структуре

46K
30 мая 2011 года
nILruM
30 / / 10.02.2010
Привет всем!
Возник вопрос.
Имеется следующая структура:

struct srtPrimer{
int IntVal;
String* StringVal;
};

Как работает memset если в структуре имеется String представляющий собой объект? Очищаются ли данные хранящиеся по указателю?
И что будет если вместо указателя на строку будет указатель на какой либо объект?
Попробовал подставить вместо строки указатель на объект, то при выполнении кода

struct srtPrimer{
int IntVal;
MyClass* ClassVal;
};

srtPrimer Buf;
memset(&Buf, 0, sizeof(srtPrimer));

Деструктор для ClassVal не вызывается...
Может ли использование memset вызвать утечки памяти для таких структур.
11
30 мая 2011 года
oxotnik333
2.9K / / 03.08.2007
Память под структуру просто забъется нулями. Указатель на строку будет равен нулю. Деструктор не вызовется. Память утечет (если до этого была выделена где то в другом месте).
46K
30 мая 2011 года
nILruM
30 / / 10.02.2010
А происходит ли заполнение нулями строки String если она не объявлена как указатель?
Я так понимаю что String сам выделяет себе память под символы строки, то как memset знает сколько памяти сейчас выделено в String?
struct srtPrimer{
int IntVal;
String StringVal;
};
11
30 мая 2011 года
oxotnik333
2.9K / / 03.08.2007
Выделяется память не под строку а под объект класса "строка". Все что этот объект захватит из памяти будет заполнено нулями, что не есть хорошо, ибо может быть внутри какая инициализация указателей, которые при обнулении тоже превратятся в ноль.
360
30 мая 2011 года
P*t*
474 / / 15.02.2007
memset не знает, сколько памяти выделено, и эта память утечет.
Для удаления объектов memset использовать нельзя.

При заполненении нулями String-а, сами символы где-то останутся, но будет утеряна память о их местонахождении ;)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог