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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.83
-=ЮрА=-
Заблокирован
Автор FAQ
#1

use /Zm to specify a higher limit - C++

23.07.2011, 19:43. Просмотров 2276. Ответов 12
Метки нет (Все метки)

Работаю с областью памяти около 20 Мб, при линковке компилятор выдал сообщение
fatal error C1076: compiler limit : internal heap limit reached; use /Zm to specify a higher limit

Где и как прописать /Zm???

Смотрел тут
http://msdn.microsoft.com/en-us/libr...(v=vs.71).aspx
но что то не въеду(
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.07.2011, 19:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос use /Zm to specify a higher limit (C++):

Your host needs to use php 5.3.10 or higher to run this version of joomla - Joomla
Joomla пишет "your host needs to use php 5.3.10 or higher to run this version of joomla" проверил версию через infophp() версия 5.3.3 что...

Ошибка: CPUs with a power rating higher than 65W are not supported - Процессоры
CPUs with a power rating higher than 65W are not supported? and mill result in automatic shut-down of the system. а вот перевод сделаный...

Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3 - jQuery
ребят почему так пишет Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3 - jQuery? когда у меня...

LIMIT - MySQL
Есть таблица table с полями (ID_продукта | ID_магазина | цена_продукта) Можно программно сделать пару запросов SELECT...

Using LIMIT - MS Access
Естъ ли в Accessе мoдификaтoр зaпрoсa LIMIT в MySQL мoжнo зaписaтъ SELECT * FROM SomeTable LIMIT 0, 10 т.е. пoкaзaтъ...

Limit - Математический анализ
немагу справиться с лимитами мне нужно их докозать через буквы все эти лимиты, напишите позжалуйста полное решение уравнений!

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
LosAngeles
Заблокирован
23.07.2011, 19:51 #2
To set this compiler option in the Visual Studio development environment
Open the project's Property Pages dialog box. For details, see Setting Visual C++ Project Properties.
Click the C/C++ folder.
Click the Command Line property page.
Type the compiler option in the Additional Options box.
vycnherwbz lkz ьымы

Добавлено через 57 секунд
это инструкция для ms vs
0
-=ЮрА=-
Заблокирован
Автор FAQ
23.07.2011, 19:56  [ТС] #3
Я выставил не помогло....
Работаю в 6-й версии.
0
Миниатюры
use /Zm to specify a higher limit  
LosAngeles
Заблокирован
23.07.2011, 20:04 #4
If C1076 occurs immediately after the build starts, the value specified for /Zm is probably too high for your program. Reduce the /Zm value.
а это?

Добавлено через 47 секунд
возможно и не повышать надо
0
-=ЮрА=-
Заблокирован
Автор FAQ
23.07.2011, 20:15  [ТС] #5
internal heap limit reached; use /Zm to specify a higher limit спустил на 50 Мб, думаю дело не в этом, пытаюсь запихнуть в программу массив из 10 000 000 элементов, вчера когда динамически память выделял программа хоть както работала, а сейчас вообще не компилится...
Изначально опция Zm вообще отсутствовала.
0
LosAngeles
Заблокирован
23.07.2011, 20:37 #6
Possible solutions
Eliminate unnecessary global variables, for example, by allocating memory dynamically instead of declaring a large array

Добавлено через 13 минут
не знаю, может поможет - попробуй вобще предкомпильные хидеры отключить
1
-=ЮрА=-
Заблокирован
Автор FAQ
23.07.2011, 21:28  [ТС] #7
LosAngeles, спасибо за отклик, к сожалению при динамическом выделении такого количества памяти программа работает некорректно, поэтому и решил статически выделить память под массив и инициализировать его из файла прямым включением в проект директивой #include
0
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
23.07.2011, 21:41 #8
а если использовать VirtualAlloc? должно быть быстрее heap'a
0
-=ЮрА=-
Заблокирован
Автор FAQ
23.07.2011, 21:54  [ТС] #9
Я пробовал динамику, с malloc работало кое как, мне это надоело и решил статически вбить массив
вот как пытаюсь ввести в проект матрицу и вектор с размерностями 3638 элементов

C++
1
2
3
4
5
6
7
8
#include <math.h>
#include <stdio.h>
#include <windows.h>
 
#define N 3638
 
#include "input_A.txt"
#include "input_B.txt"
В самих txt-шниках вбито double A[][N]={{....},....{}}; double B[] = {....}

Я делал чтение этих массивов, но даже само время считывания с инициализацией элементов значительно, вот и хотел себе упростить жизнь


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
31
32
33
34
35
36
37
38
39
40
double * str2vec(char * s, char delim, double * vec, int &m)
{
    m = 0;
    char * chBuf = strrchr(s,delim);
    while(chBuf)
    {
        vec[m] = atof(chBuf + 1);
    //  printf("vec[%04d] = %lf\r\n",m + 1, vec[m]);
        vec = (double *)realloc
            (
                (void *)vec,
                (1 + (m = m + 1))*sizeof(double)
            );
        s[strlen(s) - strlen(chBuf)] = '\0';
        chBuf = strrchr(s,delim);
    }
    if(s)
    {
        vec[m] = atof(s + 3);
//      printf("vec[%04d] = %lf\r\n",m + 1, vec[m]);
        vec = (double *)realloc
            (
                (void *)vec,
                (1 + (m = m + 1))*sizeof(double)
            );
    }
    return vec;
}
 
double * swapvec(int m, double * vec)
{
    double buf;
    for(int i = 0; i < m/2; i++)
    {
        buf = vec[m - i -1];
        vec[m - i -1] = vec[i];
        vec[i] = buf;
    }
    return vec;
}
Теперь выставив параметр /Zm 1553 получаю от компилятора уже такую ошибку

fatal error C1063:
Error executing cl.exe.
0
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
23.07.2011, 22:03 #10
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
vec = (double *)realloc
неплохо бы проверять, что возвращает realloc
во-вторых
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
к сожалению при динамическом выделении такого количества памяти программа работает некорректно
как именно?

и для быстроты можно хранить матрицу в бинарном, а не текстовом виде
1
-=ЮрА=-
Заблокирован
Автор FAQ
23.07.2011, 22:18  [ТС] #11
Реаллок по ходу ближе к концу начинал сбоить, но вначале при небольшом считанном числе строк алгоритм шёл как по маслу. За бинарку - идея, как то недодумал, обязательно попробую!
0
xAtom
915 / 740 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
24.07.2011, 07:52 #12
Вообще для больших объёмов данных более 10-15 MB лучше работать с VirtualAlloc. Пример работы с 19-20 МБ, после вызова функции страницы будут освобождены.
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
31
32
33
34
35
36
37
38
BOOL CApplicationDlg::OnInitDialog() {
    CDialog::OnInitDialog();
 
    CString  str;
    long* ptr = NULL;
 
    DWORD   size = 5000 * 1024 * sizeof(long);
 
    ptr = (long*) VirtualAlloc(NULL, size, MEM_COMMIT, PAGE_READWRITE);
 
            if(ptr == NULL) {
                    MessageBox("F_OUTEMEMORY", "Ошибка", MB_OK | MB_ICONSTOP);
                   return FALSE;
            }   
 
          if(IsBadReadPtr((LPVOID)ptr, size)) {  
           MessageBox("Неточное выделение page-памяти !", "Ошибка", MB_OK | MB_ICONSTOP);
          goto jump;
           }
 
    long  len = 5000 * 1024;
    for(long l = 0L; l < len; l++)
            ptr[l] =  1;
    
    unsigned long sum = 0;
    long* iter = ptr;
    while(len--)
         sum += *iter++;
 
    str.Format("%u - byte ~ %d MB", sum * sizeof(long), sum * sizeof(long) / (1024 * 1024));
    SetWindowText(str);
 
jump:;
    VirtualFree(ptr, 0U,  MEM_RELEASE);
    ptr = NULL;
   
     return TRUE;
}
0
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1287 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
24.07.2011, 08:03 #13
Ну круто! Ошибка компилятора, ты /Zm для компоновщика указываешь.

Добавлено через 1 минуту
Зачем в С++ проекте использовать malloc?

Добавлено через 1 минуту
ОМГ! ОМГ! ОМГ!
Если с динамическим распределение памяти программа работает не правильно, это не повод использовать статическую память! Это повод искать ошибки в алгоритме и, в первую очередь, искать выход за границы массивов!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.07.2011, 08:03
Привет! Вот еще темы с ответами:

LIMIT - MySQL
$result = mysql_query(&quot;SELECT * FROM table_reviews,table_one WHERE table_one.id_image = table_reviews.id_image ORDER BY $sort LIMIT $start,...

LIMIT - PHP БД
Всем привет! :) Есть такой запрос: mysql_query(&quot;SELECT * from $mysql_table LIMIT 3, 10&quot;); Тоесть хочю вытащить определённые...

Limit - Базы данных
Есть ли в Accesse что-нибудь подобное Limit из mySQL?

LIMIT - PHP БД
Как сказать, чтобы в $result попадала не вся таблица, а от 3-ей линии до 6-й? LIMIT насколько я знаю ставит лимит от первой линии.


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
24.07.2011, 08:03
Ответ Создать тему
Опции темы

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