Форум программистов, компьютерный форум CyberForum.ru

Теория по динамической памяти - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Деление длинного числа на длинное http://www.cyberforum.ru/cpp-beginners/thread729919.html
Всем привет! Решил написать длинную арифметику в самом ее классическом варианте, когда все операции производятся школьным столбиком. Но вот незадача: я использую основание системы счисления 10^9 (миллиард), т.е. каждая цифра моего большого числа от 0 до 999999999. При написании алгоритма деления длинного числа на длинное возникла проблема: поскольку делить на длинное число мы не умеем, то в...
C++ присвоить стрке двумерного масива значение у меня есть масив - mas; и вот кусок кода где надо присвоить второй строке масива значение 5.. вроде правильно написал не понимаю почему не работает.... for(i=1; i<2; i++) { for(j=0; j<5; j++) mas=5; } а ето для вывода уже измененого масива: http://www.cyberforum.ru/cpp-beginners/thread729915.html
c++ перегрузка функций и еще пара просьб C++
Доброй ночи! вот имеется код с классом объектом которого является комплексное число. класс нужно дополнить динамическим массивом, например, названием комплексного числа(такое уж дурацкое задание) и перегруженными функциями сравнения и преобразования числа в вещественное. Помогите пожалуйста, буду очень благодарен! просто очень срочно нужно #include "stdafx.h" #include <iostream> #include...
Фиксированный квант времени в алгоритме планирования FCFS C++
Здравствуйте. Вот код программы, планировщика, который работает по алгоритму FCFS. В нем реализованы два состояния: готовность и выполнение. Как дополнить код, чтоб было состояние ОЖИДАНИЯ и использовался КВАНТ ВРЕМЕНИ???? #include "stdafx.h" #include "conio.h" #include "iostream" #include "stdlib.h" #include "locale.h" using namespace std; void main()
C++ Создать класс файл с методом top50 по расширению http://www.cyberforum.ru/cpp-beginners/thread729907.html
Создать класс File. Добавить метод, который считает сколько файлов на определённом диске. Создать метод Competition. Он показывает файлов какого типа больше всего, а также их кол-во. Метод Top50. Распечатывает таблицу наиболее популярных расширений. Помогите пожалуйста сделать это или какую-то часть. Буду очень благодарен.
C++ Удалить среднею букву в нечетных словах текста Нужно удалить в каждом нечетном слове среднею букву, я смог дойти только до такого: удаляет онли в первом слове, дальше уж не знаю, как составить алгоритм, нужна Ваша помощь. #include <iostream> #include <conio.h> using namespace std; void main () { подробнее

Показать сообщение отдельно
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
13.12.2012, 10:59  [ТС]     Теория по динамической памяти
Ещё: откуда new знает, можно ли выделить память в уже имеющейся странице, или уже нет?

Добавлено через 6 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
int main()
{
 int *p[16];
 int  i;
 for (i=15; i>=0; --i)
 {
  p[i]=new int [16];
 }
 for (i=15; i>=0; --i)
 {
  std::cout<<i<<", "<<p[i];
  if (i>0)
  {
   std::cout<<", "<<(p[i]-p[i-1]);
  }
  std::cout<<std::endl;
 }
 for (i=15; i>=0; --i)
 {
  delete [] p;
 }
 return 0;
}
показывает, что иногда несколько раз выделяется память в одной и той же странице.

Добавлено через 17 минут
Цитата Сообщение от aLarman Посмотреть сообщение
нет не там) читай http://www.cplusplus.com/reference/new/operator%20new[]/
Добавлено через 57 секунд
и это http://www.cplusplus.com/reference/n...rator%20delete[]/
Как применять я знаю и так. А откуда известно, использована ли страница полностью, или нет и какие именно байты из неё можно выдать?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
int main()
{
 int *p[16];
 int  i;
 for (i=15; i>=0; --i)
 {
  p[i]=new int [2];
 }
 for (i=15; i>=0; --i)
 {
  std::cout<<i<<", "<<p[i];
  if (i>0)
  {
   std::cout<<", "<<(p[i-1]-p[i])<<", "<<((p[i-1]-p[i])/sizeof(int));
  }
  std::cout<<std::endl;
 }
 for (i=15; i>=0; --i)
 {
  delete [] p;
 }
 return 0;
}
показывает, что могут быть выданы много адресов в одной странице. Кстати, почему-то шаг равен размеру одного инта. Откуда делит знает, можно ли у прилады забрать всю страницу?

Добавлено через 30 минут
Сам прогнал, не учёл, что вычитание даёт разницу в сайзофах, а не байтах.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
int main()
{
 int *p[16];
 char *v1;
 char *v2;
 int  i;
 size_t t;
 for (i=15; i>=0; --i)
 {
  p[i]=new int [2];
 }
 for (i=15; i>=0; --i)
 {
  std::cout<<i<<", "<<p[i];
  if (i>0)
  {
   v1=(char *)p[i];
   v2=(char *)p[i-1];
   t=v2-v1;
   std::cout<<", "<<t<<", "<<(t/sizeof(int));
  }
  std::cout<<std::endl;
 }
 for (i=15; i>=0; --i)
 {
  delete [] p;
 }
 return 0;
}
Выделяет почти вплотную.
 
Текущее время: 00:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru