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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
yurets17
1 / 1 / 0
Регистрация: 07.10.2013
Сообщений: 170
#1

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

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

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

Переменные в динамической памяти! - C++
подскажите как реализовать такое задание: Разместите в динамической памяти две переменные типа структура, содержащую информацию о...

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

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

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

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

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

7
Enotniy
96 / 95 / 14
Регистрация: 15.01.2014
Сообщений: 283
03.02.2014, 17:25 #2
yurets17, а прокомментировать можете? Что за структуры такие, что значат стрелки? что значат просто черточки
0
yurets17
1 / 1 / 0
Регистрация: 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 / 57
Регистрация: 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 / 0
Регистрация: 07.10.2013
Сообщений: 170
03.02.2014, 18:23  [ТС] #5
я же написал, что код скорее всего неправильный! а как по другому объяснить задание я не знаю
0
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
03.02.2014, 18:30 #6
Цитата Сообщение от yurets17 Посмотреть сообщение
я же написал, что код скорее всего неправильный! а как по другому объяснить задание я не знаю
Так вы словами объясните что куда разместить, например так
выделить память в стеке (статическая память) для переменной и присвоить ей значение, далее выделить память на кучи (динамическая память) для массива или переменных и проделать с ними следующие операции....

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

Выделить в стеке память под две переменные(переменные не инициализировать, в них мусор), далее в кучи выделить память под два массива(один из трех элементов, а один из двух). Потом сделать указатель от первой переменной в стеке на нулевой элемент массива(в котором находится значение 78) из трех элементов. Далее со 2 элемента данного массива сделать указатель на какую-то область памяти в в кучи, в которой хранится символ "д". Далее с третьего элемента данного массива сделать указатель на другой массив из 2 элементов. Также от второй переменной в стеке сделать указатель на нулевой элемент второго массива, где находится строка символов "Зима", а в первый элемент данного массива инициализирован как NULL.
0
mustimur
268 / 222 / 57
Регистрация: 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
Привет! Вот еще темы с ответами:

delete[] статической памяти - C++
1. Должна ли возникать ошибка (или падение программы) при применении delete к статической памяти? У меня (Microsoft Visual Studio 2005)...

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

Возможно ли обращение к статической памяти функции извне? - C++
Здравствуйте! Возможно ли сделать так? Obj* ptr; void F() { static Obj _obj = { }; ptr = &amp;_obj; }

Теория по динамической памяти - C++
Предположим, применяется оператор new в форме для массива: p=new int ;. n ведь может быть и большим. Может n==1000000? Где запоминается,...


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

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

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