Форум программистов, компьютерный форум, киберфорум
Наши страницы

Работа с памятью - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Преобразование матриц (указатели) http://www.cyberforum.ru/cpp-beginners/thread724895.html
Построить матрицу B по заданной целочисленной матрице А порядка n (n <= 100). Решить задачу с использованием указателей. Построить матрицу В такого же размера, как А, элементы которой обладают...
C++ Как это будет на С++? вот мой код: uses crt; function degree(a: real; n:byte):real; begin if n=0 then degree:=1 else degree:=a*degree(a,n-1) end; var a,p,s: real; n,i:byte; http://www.cyberforum.ru/cpp-beginners/thread724886.html
Динамическое распределение памяти C++
Выполните задание следующим образом: а) для хранения массивов используйте динамически распределяемую память; б) каждый этап обработки массивов (ввод, заполнение, вывод, упорядочение и т.п.)...
C++ Выделение слов в строке
Найти количество слов в строке, заканчивающихся на буквы 'rd'.
C++ строки (напечатать все слова,которые совпадают с начальным отрезком латинского алфавита) http://www.cyberforum.ru/cpp-beginners/thread724876.html
Ребята,нужна помощь!!) Дана строка,которая состоит из слов, разделенных пробелами. Нужно напечатать все слова,которые совпадают с начальным отрезком латинского алфавита (a, ab, abc,abcd … и т. д)
C++ bool+bool=string Здравствуйте! Прошу помощи в задаче, существует 4 функции, возвращающие 1/0, нужно эти bool последовательно соединить в string. Т.е. вернется, например, 0 1 1 0, в переменной будет 0110... подробнее

Показать сообщение отдельно
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916

Работа с памятью - C++

09.12.2012, 16:11. Просмотров 989. Ответов 4
Метки (Все метки)

Может кто хорошо понимает механизм выделения и освобождения памяти объяснить его, а то я в конец запутался с ним, вот помогал одному форумчанину и оказалось , что сам не понимаю как работает, задача была добавление в конец массива эллемента, реализована была вот так
C++
1
2
3
4
5
6
7
8
9
10
11
void add(int**P,int &N,int x) 
{
  N++; 
  int *temp=new int[N]; 
  for (int i = 0; i < N-1; i++) {
     temp[i]=(*P)[i];           
  }                             
  temp[N-1]=x;  
  *P=temp;
  delete temp;
}
Я пытался сделать передачу не указателя на указатели int **P , а просто указатель на тип *P но получалось так что содержимое не менялось при выходе, потом вопрос такой, даже если оставим текущий код, у нас старая память массива Р не используется я могу его удалять? и правильно ли я делаю удаляя temp ведь фактически на тоже место указывает и Р, но получается что при таком удалении программа делает нужный мне результат а если я пытаюсь очистить Р перед присвоением ему новго адреса , то выскакивает ошибка
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru