Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
да че там, есть области памяти а есть указатели на области памяти, хранящиеся в других областях памяти
и дальше по иерархии хоть до бесконечности, пока мозг способен воспринимать
Более того, ассемблерными вставками тоже очень даже пользуются.
частично забираю свои слова обратно, смотреть с 18:00 , да на асме не пишут, а правят уже скомпилированный код - тогда логично
насколько я понимаю, что делают современные компиляторы с ассемблерными вставками - это всего лишь имитация асм, т.е. не факт, что асм вставка именно в таком виде попадет в скомпилированный код, а чтобы действительно оптимизировать в асме код достаточно в дебагере переписать участки кода на асме - имхо
да че там, есть области памяти а есть указатели на области памяти, хранящиеся в других областях памяти
и дальше по иерархии хоть до бесконечности, пока мозг способен воспринимать
Ага, а еще классно получается не уследить за тем, жива ссылка или нет и залезть в давно освобожденный участок памяти, который уже другой процесс использует и все там поломать)))
Ага, а еще классно получается не уследить за тем, жива ссылка или нет и залезть в давно освобожденный участок памяти, который уже другой процесс использует и все там поломать)))
Что за сказки, такое было возможно только в Windows 3.*. Винда вас в память чужого процесса не пустит, каждый процесс работает в своей области, причем для него адресация памяти начинается с нуля, винда ему так ее представляет. И вообще, винда память выделяет только при реальной записи данных. Сделайте массив double arr[1024*1024*1024] и посмотрите, сколько памяти выделилось реально в диспетчере задач. А нисколько! Пока в массив реально писать не начнете, память не будет выделяться кусочками по 4 Кб. Даже если будете писать по рандомным индексам, все равно такими кусочками. Как винда все это виртуализирует, для меня непостижимо!
Как винда все это виртуализирует, для меня непостижимо!
неохота гуглить, но с появлением Пентиум-1 и появились у процессора дескрипторы сегментов памяти и виртуальная память, т.е. скорее всего это на уровне железа виртуализация, а Винда этим умело пользуется
Что за сказки, такое было возможно только в Windows 3.*. Винда вас в память чужого процесса не пустит, каждый процесс работает в своей области, причем для него адресация памяти начинается с нуля, винда ему так ее представляет. И вообще, винда память выделяет только при реальной записи данных. Сделайте массив double arr[1024*1024*1024] и посмотрите, сколько памяти выделилось реально в диспетчере задач. А нисколько! Пока в массив реально писать не начнете, память не будет выделяться кусочками по 4 Кб. Даже если будете писать по рандомным индексам, все равно такими кусочками. Как винда все это виртуализирует, для меня непостижимо!
В трёшке виртуализации не было, это другая система, не NT. Там вообще хвостов от доса было навалом, половина системных функций была навешана на int 21.
Не понятен такой случай:
Далее, в ф-ии идет изменение размера матрицы М:
То есть, как я понял, вся эта портянка только для выделения памяти под матрицу, но никакими значениями она не заполняется? То есть этот код можно выкинуть для mql (ну, после определения кол-во строк, и такого же кол-ва столбцов квадратной матрицы)
или все-таки матрица инициализируется какими-то значениями
...Как винда все это виртуализирует, для меня непостижимо!
Почитайте Рихтера. У него все это разжевано до боли в сердце.
SeriousRacoon:
Кстати, интересная дырка, надо посмотреть, можно ли так завалить сервер
Нельзя.
Не понятен такой случай:
score->n = MAX((int) floor(B/2.0), 2) - 1; задали кол-во строк, ок score->m = (int *) malloc(score->n * sizeof(int)); а кол-во столбцов тут чему равно? кол-ву строк?
score->M[i] = (double *) malloc ((score->m[i]) * sizeof(double)); а здесь идет просто выделение памяти для матриы М?
Далее, в ф-ии идет изменение размера матрицы М:
То есть, как я понял, вся эта портянка только для выделения памяти под матрицу, но никакими значениями она не заполняется? То есть этот код можно выкинуть для mql (ну, после определения кол-во строк, и такого же кол-ва столбцов квадратной матрицы)
или все-таки матрица инициализируется какими-то значениями
В mine_score *m - УКАЗАТЕЛЬ на int, и в коменте сказано что это массив, то есть для каждой строки разное количество столбцов, это называется "гребневый масив" не прямоугольный.
score->m = (int *) malloc(score->n * sizeof(int))
Тут просто для этого массива длин строк выделяется память, значений нет
Для самой матрицы М
тут выделяется память для указателей строк
score->M[i] = (double *) malloc ((score->m[i]) * sizeof(double)); а здесь идет просто выделение памяти для матриы М?
а тут для столбцов