Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
korez
8 / 8 / 1
Регистрация: 22.02.2011
Сообщений: 182
1

Переполнение стека из-за передачи струтуры

10.03.2014, 00:43. Просмотров 479. Ответов 10
Метки нет (Все метки)

у меня происходит переполнение стека из-за передачи большой структуры.
и не только из-за структуры пытался передать большую строку тоже переполнеие стека но сейчас про стуктуру так как строка всего лишь массив.
(указатели использовать нельзя - не смеется, там свой скриптовый язык, там нет указателей)
пишу ДЛЛ.
1. могу ли выделить память какойнибудь функцией для экзешника чтобы она увеличила стек?
2. как мне выделить память для стурктуры, ВАЖНО - мне нужно обращаться к ней как обычно
C++
1
2
3
4
5
6
7
//если это структура
struct mystruct
{ int a;
  int b;};
mystruct mystruct1;
//обращаюсь к a
mystruct1.a = 1;
а то прийдется все перписывать.
3. чтобы она передовалась по ссылке (если я не ощибаюсь). если передам ее в функцию не создается никаких копий и функция меняет начальный экземляр, изменения видны везде.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.03.2014, 00:43
Ответы с готовыми решениями:

Переполнение стека
Добрый вечер! Я пытался решить следующую задачку: Петя и Вася часто играют...

Переполнение стека
Всем привет. Помогите, пожалуйста с решением одной проблемы. Мне нужно в...

Переполнение стека
Хочу полюбопытствовать. Вычитал недавно, что на стек выделяется ограниченная...

Переполнение стека
Доброго времени суток, форумчане! Начинаю плюсы осваивать, подскажите,...

Переполнение стека
Привет народ. Такой вопрос: Если в общем виде: if (условие) double d else...

10
SharpDeveloper
135 / 132 / 22
Регистрация: 16.02.2012
Сообщений: 453
10.03.2014, 01:01 2
А теперь, пожалуйста, еще раз и по-русски.
1
mustimur
268 / 222 / 72
Регистрация: 22.11.2013
Сообщений: 837
Записей в блоге: 1
10.03.2014, 10:14 3
Цитата Сообщение от SharpDeveloper Посмотреть сообщение
А теперь, пожалуйста, еще раз и по-русски.
А лучше на С++, код покажите. Чтобы переполнить стек Вашей структурой надо постараться... Но если действительно нужны такие размеры, то выделяйте память под нее динамичиске на куче (а не на стеке).
1
Aloir
219 / 219 / 38
Регистрация: 17.12.2010
Сообщений: 710
10.03.2014, 10:34 4
ага, и еще добавьте конструктор с инициализацией данных как минимум.
1
korez
8 / 8 / 1
Регистрация: 22.02.2011
Сообщений: 182
10.03.2014, 11:47  [ТС] 5
SharpDeveloper, что тут объяснять
экспортирую функцию из ДЛЛ и в ней создаю струтуру
mustimur структура не из примера, она гораздо больше
C++
1
2
3
4
5
6
7
8
//вот так объявляю стуктуру в .Н файле
struct mystruct
{ int a;
  int b;};
// вот так создаю структуру в .срр файле, файл содержит функции ЭКСПОРТИРУЕМЫЕ ДЛЛ
mystruct mystruct1;
//вот так передаю стуктуру в функцию 
function(mystruct);//<- здесь происходит переполнение стека
пожалуйста не пишите про передачу по ссылке я про это знаю мне нужно выделить память под структуру
C++
1
2
function(mystruct &mystruct1);
{}
0
Aloir
219 / 219 / 38
Регистрация: 17.12.2010
Сообщений: 710
10.03.2014, 12:57 6
как вариант увелечение стека

выделить память под структуру? вы же должны знать размер структуры, а дальше new[]

а что для вас
Цитата Сообщение от korez Посмотреть сообщение
мне нужно обращаться к ней как обычно
1
DrOffset
8928 / 4809 / 1176
Регистрация: 30.01.2014
Сообщений: 7,847
10.03.2014, 13:37 7
Цитата Сообщение от korez Посмотреть сообщение
переполнеие стека
sizeof(mystruct) выведи и сюда покажи.
1
mustimur
268 / 222 / 72
Регистрация: 22.11.2013
Сообщений: 837
Записей в блоге: 1
10.03.2014, 18:10 8
Цитата Сообщение от Aloir Посмотреть сообщение
как вариант увелечение стека
Плохо вариант... Не понял а это:
Цитата Сообщение от Aloir Посмотреть сообщение
вы же должны знать размер структуры
зачем? Это ведь так выделяется:
C++
1
2
3
4
int c=1000;
mystruct *mst= new mystruct [c];
....
delete [] mst;
Если она 1 то c=1.. Зачем ее размер в этом случае? Другой вопрос если выделяешь так:
C++
1
2
3
4
5
int c=1000;
mystruct *mst;
mst=(mystruct*) malloc (sizeof(mystruct)*c);
....
free(mst);
То да размер структуры
C++
1
sizeof(mystruct)
надо знать... Или я Вас не правильно понял?
1
korez
8 / 8 / 1
Регистрация: 22.02.2011
Сообщений: 182
12.03.2014, 19:41  [ТС] 9
я нашел как вылечить но кривовато
проект - свойства - линкер - систем - там указываем резервируемый размер стека.
0
mustimur
268 / 222 / 72
Регистрация: 22.11.2013
Сообщений: 837
Записей в блоге: 1
12.03.2014, 20:15 10
Цитата Сообщение от korez Посмотреть сообщение
проект - свойства - линкер - систем - там указываем резервируемый размер стека.
Плохой вариант еще раз повторюсь... От сбоев программы не будет гарантии. Менять стек не вариант.
1
korez
8 / 8 / 1
Регистрация: 22.02.2011
Сообщений: 182
13.03.2014, 13:09  [ТС] 11
mustimur, тогда буду пробовать твой пример потом напишу.
0
13.03.2014, 13:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2014, 13:09

Переполнение стека
Всем добрый вечер. Я создаю вектор, который имеет большой размер: порядка...

Переполнение стека
Есть функция f(): void f() { //... std::make_pair&lt;size_t, size_t&gt;...

Рекурсия - переполнение стека
Помогите написать,задание ниже#include &quot;stdafx.h&quot; #include &quot;stdafx.h&quot;...


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

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

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