Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
yurets17
1 / 1 / 2
Регистрация: 07.10.2013
Сообщений: 170
#1

Переменные в статической и динамической памяти!

03.02.2014, 17:09. Просмотров 529. Ответов 7
Метки нет (Все метки)

Народ, подскажите как этот рисунок перевести в программу! тоесть как с помощью программы разместить таким образом переменные в памяти
Переменные в статической и динамической памяти!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.02.2014, 17:09
Ответы с готовыми решениями:

Переменные в динамической памяти!
подскажите как реализовать такое задание: Разместите в динамической памяти две...

ООП. Переменные-члены в динамической памяти.
Решил я массив в классе динамически создавать и наткнулся на пробелы в знаниях....

Заполнение динамической матрицы(дв. массива) аналогично статической
Т.е. простой двумерный массив можно заполнить так: { {0, 0, 0, 0, 0}, {0, 1,...

В чем отличие статической линковки библиотек от динамической?
В чем отличие статической линковки библиотек от динамической?

В чём разница между динамической и статической линковкой библиотеки?
В чём разница между динамической и статической линковкой библиотеки? Если...

7
Enotniy
98 / 99 / 31
Регистрация: 15.01.2014
Сообщений: 283
03.02.2014, 17:25 #2
yurets17, а прокомментировать можете? Что за структуры такие, что значат стрелки? что значат просто черточки
0
yurets17
1 / 1 / 2
Регистрация: 07.10.2013
Сообщений: 170
03.02.2014, 17:30  [ТС] #3
В статической памяти обьявлены 2 переменные! стрелочки и черточки это типа указатели! а в динамической памяти, я так думаю, что это массивы

Добавлено через 1 минуту
вот что-то подобное, но это скорее всего неправильно
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void f25(){
    int *p1;
    char  *p2;
    string *p3;
    p1 = new int[3];
    p2 = new char;
    p3 = new string[2];
    *p1 = 78;
    *++p1 = *p2;
    *p2 = 'д';
    *p3 = "Зима";
    cout<<*--p1<<"  "<<*p1<<"  "<<*p2<<"  "<<*p3;
    *p3++;p3 = NULL; cout<<"  "<<p3;
}
0
mustimur
268 / 222 / 72
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
03.02.2014, 18:17 #4
C++
1
2
 int *p1;
    p1 = new int[3];
-это, если не заблуждаюсь размещение на кучи (динамическая память)
*p1 = 78; - это присвоение первому элемента массива p1[0]=78.
Вот это оригинально
C++
1
2
 char  *p2;
    p2 = new char;
это должно быть полный аналог char p2;но размещенный (на куче) в динамической памяти и следовательно обращаться придется p2[0]. Зачем
А вот здесь не понял
*++p1 = *p2;//присвоить значение первому элементу p1 взятый из памяти указателя p2 и сместить указатель p1 на один элемент. При этом p2 в этот момент еще не определен, плюс типы не одинаковы. размер p2 меньше p1. т.е. в любом случае эта строчка прочтет мусор...
Одним словом и задание не особо понял, а от кода
0
yurets17
1 / 1 / 2
Регистрация: 07.10.2013
Сообщений: 170
03.02.2014, 18:23  [ТС] #5
я же написал, что код скорее всего неправильный! а как по другому объяснить задание я не знаю
0
mustimur
268 / 222 / 72
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
03.02.2014, 18:30 #6
Цитата Сообщение от yurets17 Посмотреть сообщение
я же написал, что код скорее всего неправильный! а как по другому объяснить задание я не знаю
Так вы словами объясните что куда разместить, например так
выделить память в стеке (статическая память) для переменной и присвоить ей значение, далее выделить память на кучи (динамическая память) для массива или переменных и проделать с ними следующие операции....

Добавлено через 56 секунд
А то схему мы не поняли.... Да идею кода понять сложно
0
yurets17
1 / 1 / 2
Регистрация: 07.10.2013
Сообщений: 170
03.02.2014, 18:45  [ТС] #7
Извините, если что не так! я описал задание так как я его понимаю(хотя не исключено что я сам понимаю его неправильно).

Выделить в стеке память под две переменные(переменные не инициализировать, в них мусор), далее в кучи выделить память под два массива(один из трех элементов, а один из двух). Потом сделать указатель от первой переменной в стеке на нулевой элемент массива(в котором находится значение 78) из трех элементов. Далее со 2 элемента данного массива сделать указатель на какую-то область памяти в в кучи, в которой хранится символ "д". Далее с третьего элемента данного массива сделать указатель на другой массив из 2 элементов. Также от второй переменной в стеке сделать указатель на нулевой элемент второго массива, где находится строка символов "Зима", а в первый элемент данного массива инициализирован как NULL.
0
mustimur
268 / 222 / 72
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
03.02.2014, 19:08 #8
Задание уточните, либо я его не понимаю, либо оно тупиковое:
вот это не понял:
Цитата Сообщение от yurets17 Посмотреть сообщение
потом сделать указатель от первой переменной в стеке на нулевой элемент массива
результат каков должен быть? переменная в стеке получит значения первого элемента массива? тогда так:
C++
1
2
3
4
int c;
int *p1=new int[3];
*p1=78;
c=*p1; //либо c=p1[0]
А это как?
Цитата Сообщение от yurets17 Посмотреть сообщение
Далее со 2 элемента данного массива сделать указатель на какую-то область памяти в в кучи, в которой хранится символ "д"
символ занимает один байт а элемент массива int под x86 занимает 4 байта, он и будет читать 4 байта (в 3х последних из которых мусор)....
Цитата Сообщение от yurets17 Посмотреть сообщение
где находится строка
строка - это сама по себе массив, его надо в стеке разместить или как ?
0
03.02.2014, 19:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.02.2014, 19:08

Размер исполняемого файла при статической и динамической линковке
В общем, компилирую простой пример: int main() { } Компилирую со статической...

delete[] статической памяти
1. Должна ли возникать ошибка (или падение программы) при применении delete к...

Выделение статической памяти, не используя статические объекты
Здравствуйте! Как известно, когда мы объявляем статическую переменную, то...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru