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

хитрая константа не даёт создать обычный массив - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Массивы и натуральные числа http://www.cyberforum.ru/cpp-beginners/thread391748.html
Помогите пожалуйста написать программу. Ввести натуральное число n. а) Записать в массив только те делители числа n, которые являются палиндромами. б) Вывести все делители числа n, у которых последняя цифра наименьшая. Заранее спасибо.
C++ Класс "Список", функция добавления элемента в конец #include <iostream> #include <cstring> using namespace std; struct myElem { char *line; myElem *next; myElem(const char* str) http://www.cyberforum.ru/cpp-beginners/thread391731.html
C++ Вывести все целые числа, расположенные между заданными
Даны два целых числа A и B (A < B). Вывести все целые числа, расположенные между данными числами (включая сами эти числа), в порядке их убывания. Использовать цикл for. #include <stdio.h> #include <conio.h> void main() { int a,b,i; clrscr(); printf("vvedite a: "); scanf("%i",&a);
C++ Проверьте, пожалуйста, правильность составленного мной алгоритма)
Вот код: #include <iostream> #include <stdlib.h> #include <stdio.h> int main() { FILE *fp; int n, i, min, number, sum, a; char fname = "D:\\file.txt";
C++ #pragma once http://www.cyberforum.ru/cpp-beginners/thread391715.html
Можно ли считать директиву #pragma once полноценно заменой техники #ifndef MYFILE_H #define MYFILE_H ... #end if
C++ Ошибка сегментации. Здравствуйте, дорогие форумчане! Тут такое дело, есть программа, код приведен ниже, там есть некоторый массив D. После компиляции программы вместе с этим массивом, программа вылетает, выдав ошибку Без неё, программа компилируется, выполняет циклы и успешно завершает работу. Проверил отладчиком, выдало "ошибку сегментации". Увеличил размер стека, тож не помогло. Чё делать? #include... подробнее

Показать сообщение отдельно
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
25.11.2011, 22:13
Цитата Сообщение от Bers Посмотреть сообщение
И если я правильно понял, то доступ к данным в куче (или к статикам) намного медленнее, чем доступ к данным на стеке.
да
чтобы расположить данные на стеке надо сдвинуть пару регистров в процессоре (ясное дело что с виртуальной памятью и защищенным режимом свои усложнения, но в целом все просто)
просить памяти у ос не надо, так как она предварительно выделена в некотором количестве (при приближении к вершине стека может быть выделено еще, в каждой ос свои способы)
адресация относительная - адреса выделяются по нарастающей - выделение и отдача памяти элементарная и быстрая
проблема в том, что время жизни выделенной памяти жестко фиксировано стеком вызовов - поэтому такой способ выделения данных работает только для локальных переменных

куча же пользуясь системными вызовами запрашивает у ОС память - у стека она уже выделена при старте программы
кроме того менеджеру памяти постоянно приходится сталкиватся с фрагментацией и думать куда бы приткнуть данные пользователя
естественно логика его работы значительно сложней

Добавлено через 2 минуты
Цитата Сообщение от Bers Посмотреть сообщение
Другими словами, все глобал-статики всегда размещаются по одним и тем же адресам.
И эти адреса не меняются от запуска к запуску программы.
зависит от работы компилятора
да и вообще, во всех топовых компиляторах есть http://en.wikipedia.org/wiki/Address..._randomization
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru