Среда, 18 Декабря 2024, 12:14

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Динамическая память, указатели
BetMoraДата: Четверг, 01 Апреля 2010, 15:58 | Сообщение # 1
постоянный участник
Сейчас нет на сайте
Решил попрактиковаться с указателями, для этого реализовал кусочек динамической памяти:
Code
#include <iostream>
using namespace std;

void main()
{
  setlocale(LC_ALL, "");
  int Variable = 5; //создаем переменную, и присваеваем ей 5
  int *pVariable = &Variable; //создаем указатель, и записываем в него адрес переменной
  int *pDynamicMemory = new int; //выделяем в динамическую память пространство для переменной типа int
  if (pDynamicMemory = NULL) //если динамическая память не создается - вывести сообщение, остановить программу
  {
   cout << "Ошибка! Не хватает памяти для pDynamicMemory!!";
   system("pause");
  }
  *pDynamicMemory = 7; //установить значение 7 в переменную находящиюся по адрессу из динамической памяти(т.е. в переменную int Variable)
  cout << "Variable: " << Variable << "\n";
  cout << "*pVariable: " << *pVariable << "\n";
  cout << "*pDynamicMemory: " << *pDynamicMemory << "\n";
  delete pDynamicMemory; //очистить динамическую память
  pDynamicMemory = new int; //выделяем в динамическую память пространство для переменной типа int
  if (pDynamicMemory == NULL) //если динамическая память не создается - вывести сообщение, остановить программу
  {
   cout << "Ошибка! Не хватает памяти для pDynamicMemory!!";
   system("pause");
  }
  *pDynamicMemory = 9; //установить значение 9 в переменную находящиюся по адрессу из динамической памяти(т.е. в переменную int Variable)
  cout << "pDynamicMemory: " << *pDynamicMemory << "\n";
  delete pDynamicMemory; //очистить динамическую память
  system("pause");
}

но по выполнению, происходит ошибка указывающая на оператор "pDynamicMemory = 7..", сообщая о том что недостаточно прав.
Как решить эту траблу?


Перекуём баги на фичи!
karuyДата: Четверг, 01 Апреля 2010, 16:17 | Сообщение # 2
заслуженный участник
Сейчас нет на сайте
Потому что адрес переменной не у pdynamicmemory храниш а у pvariable.
BetMoraДата: Четверг, 01 Апреля 2010, 16:30 | Сообщение # 3
постоянный участник
Сейчас нет на сайте
Quote (karuy)
Потому что адрес переменной не у pdynamicmemory храниш а у pvariable.

ах ёмае, точно smile спс, буду дома посмотрю smile


Перекуём баги на фичи!
ApatiДата: Четверг, 01 Апреля 2010, 19:12 | Сообщение # 4
заслуженный участник
Сейчас нет на сайте
karuy, нет, в этом смысле все правильно.
Ошибка вот здесь:
Code
if (pDynamicMemory = NULL)

Вместо оператора сравнения используется оператор присваивания. И переменная pDynamicMemory содержит адрес NULL, а тут конечно же никто не даст прав изменять значения по адресу NULL
BetMoraДата: Четверг, 01 Апреля 2010, 20:08 | Сообщение # 5
постоянный участник
Сейчас нет на сайте
Quote (Apati)
karuy, нет, в этом смысле все правильно.
Ошибка вот здесь:
Code
if (pDynamicMemory = NULL)

Вместо оператора сравнения используется оператор присваивания. И переменная pDynamicMemory содержит адрес NULL, а тут конечно же никто не даст прав изменять значения по адресу NULL


да, спасибо, проблема правда в этом smile


Перекуём баги на фичи!
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг