Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/97: Рейтинг темы: голосов - 97, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 15.04.2009
Сообщений: 49

Проверка выделена ли память под указатель

27.05.2009, 16:16. Показов 18689. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уважаемые программисты!!!!!
подскажите пожалуйста можно ли каким-либо способом проверить в условном операторе, выделена ли память под указатель
я пытался делать так:
C++
1
2
3
4
if (ptr == NULL)
{
    ptr = new ...//дальше выделяется память
}
но в этом случае выбрасывалось исключение типа access violation reading location типа того..
что мне делать скажите плиз!!!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.05.2009, 16:16
Ответы с готовыми решениями:

Проверка, выделена ли память
Возможно ли проверить, указывает указатель на выделенную память, или нет.

Почему указатель теряет свои значения после выхода с метода, память выделена динамически
#include <iostream> using namespace std; void sqr( int* a, int length ); int main() { int *a = new int; int length =...

Ввод значения в переменную типа string, память под которую выделена динамически
Ребят, подскажите пожалуйста, как организовать ввод значения в переменную типа string, память под которую выделена динамически? ...

13
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
27.05.2009, 17:08
Ты хоть исходник покажи. В общем случае так делать нельзя, потому как ptr у тебя может быть неинциализированным - т.е. там будут мусор, который не равен NULL, а ты в этом случае его будешь трактовать как нормальный указатель
0
0 / 0 / 0
Регистрация: 15.04.2009
Сообщений: 49
27.05.2009, 17:40  [ТС]
а NULL тогда что такое??? мне непонятно.
Миниатюры
Проверка выделена ли память под указатель  
0
 Аватар для Mecid
683 / 232 / 16
Регистрация: 15.10.2007
Сообщений: 1,246
27.05.2009, 18:57
NULL это не на что не указывает
0
0 / 0 / 0
Регистрация: 15.04.2009
Сообщений: 49
27.05.2009, 19:19  [ТС]
ясно а мою проблему можно как нибудь решить?
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
27.05.2009, 19:32
Так ты ещё проблему не рассказал, а уже спрашиваешь, можно ли её решить
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
27.05.2009, 19:33
Ты должен знать, что практика говорит: "после того, как удаляешь/освобождаешь что-то ставь указатель в NULL и будет тебе счастье". Даже если память под указатель не выделена, в область, все равно, можно писать/читать, если она валидна. Если ты сидишь под виндой, то там есть:
http://msdn.microsoft.com/en-u... S.85).aspx
http://msdn.microsoft.com/en-u... S.85).aspx
Как юзать - разберешься.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
27.05.2009, 19:37
Да неужто там никаких Watchpoint'ов нет?
0
 Аватар для Mecid
683 / 232 / 16
Регистрация: 15.10.2007
Сообщений: 1,246
27.05.2009, 19:53
это не проблема у тебя даже
тебе надо делать так
C
1
2
void* p=NULL;
p=malloc(size);
Добавлено через 6 минут 43 секунды
Перед использованием указателей им всегда нужно присваивать
значения. Если вы разыменовываете указатель, которому еще не
присвоено значение, то считанные из него данные могут представ-
лять собой случайные биты, а присваивание значения указываемому
элементу может затереть другие данные, вашу программу или даже
операционную систему. Это звучит несколько пугающе, но при опре-
деленной дисциплине такие вещи легко отслеживаются.
0
0 / 0 / 0
Регистрация: 15.04.2009
Сообщений: 49
27.05.2009, 20:13  [ТС]
Mecid,
в том то и дело что в моей проге исользуется не "указатель которому еще не происвоено значение", а указатель под который не выделена память
проблема в том что мне нужно каким-то образом отслеживать обращения к указателю и, если он не инициализирован, то выделять память под него...
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
27.05.2009, 20:33
TimoshkaXXX, либо ты делаешь как Mecid сказал, либо никак, можно конечно проверять VirtualQuery выделена ли виртуальная страница под этот адрес(вообще бредовая идея, во-первых мусор, во вторых освобождается ли страница при освобождении памяти), но всеже ничего логичнее чем присваивать NULL при инициализации и освобождении
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
27.05.2009, 22:07
TimoshkaXXX,
вы определенно путаете инициализацию с выделением памяти.
Инициализация должна происходить при СОЗДАНИИ переменной/указателя.
А выделение памяти - в нужный момент.
Т.е., если вы создаете указатель(например, при создании класса), то ему СРАЗУ должен прискаиваться NULL.
А потом, при обращении, проверка: если NULL - то выделить память.
0
 Аватар для Mecid
683 / 232 / 16
Регистрация: 15.10.2007
Сообщений: 1,246
27.05.2009, 22:31
Цитата Сообщение от TimoshkaXXX Посмотреть сообщение
Mecid,
в том то и дело что в моей проге исользуется не "указатель которому еще не происвоено значение", а указатель под который не выделена память
проблема в том что мне нужно каким-то образом отслеживать обращения к указателю и, если он не инициализирован, то выделять память под него...
я чет не очень понял....может на коде покажешь
и ваще почитай про неинициализированные указатели
0
0 / 0 / 0
Регистрация: 15.04.2009
Сообщений: 49
28.05.2009, 00:09  [ТС]
теперь кажется понятно что к чему спасибо!!!!!!)))))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.05.2009, 00:09
Помогаю со студенческими работами здесь

Функция, принимающая указатель и число байт и выделяющая память под указатель
Здравствуйте. Задача легкая, но почему-то завис Нужно написать функцию, принимающую указатель и число байт и выделяющую память под...

Как правильно удалять выделенную память под указатель на указатель?
есть код #include <iostream> #include <conio.h> #include <stdlib.h> #include <time.h> using namespace std; void sort_1(const...

Разделяемая память POSIX IPC как узнать, что память выделена и её уже можо использовать?
1. Описание проблемы: Две программы. Одна пишет в разделяемую память, другая читает. Из-под читающей программы read невозможно понять...

Можно ли так выделить память в куче под указатель на массив?
Здравствуйте Можно ли выделить память в куче под указатель на массив например так:? int (*c)=(int (*)) new int; или нужно как...

Выделить под массив динамически память. Обращаться к элементам массива необходимо используя указатель
/*В одномерном массиве, состоящем из n вещественных элементов, вычислить: - количество элементов массива, лежащих в диапазоне от А до В; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru