HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 17.06.2016, 00:19
dimoz
Новичок
Регистрация: 13.12.2020
Сообщений: 0
С нами: 2851002

Репутация: 0
По умолчанию

Цитата:
Сообщение от AWRage  

Если я понял тебя правильно.

C++:





Код:
struct
stMenuInfo
{
const
char
*
mname
;
struct
stMenuInfo
*
pmenu
;
struct
stMenuInfo
*
cmenu
;
unsigned
int
bcount
;
struct
stButtonInfo
*
btn
;
}
;
struct
stMenuInfo
*
mdata
;
unsigned
int
mcount
=
0
;
unsigned
int
madd
(
const
char
*
mname
)
{
// Есть массив меню и их количество.
// realloc - это функция, которая изменяет количество выделенной памяти
// для нашего участка памяти (массива mdata)
// и возвращает содержимое предыдущего участка, то есть наш массив с +1 элементом.
// То есть, мы должны присвоить mdata её return,
// а в аргументах указать участок для которого хотим выделить память
// и количество выделенной памяти.
// То есть, mdata и ++mcount (сразу добавляем 1 к mcount, важно чтобы ++ стояло перед переменной, загугли почему если не знаешь)
// умножить на размер структуры.
// Таким образом, у нас есть массив который содержит все те же элементы,
// но у которого появился еще один элемент с "мусором".
mdata
=
(
struct
stMenuInfo
*
)
realloc
(
mdata
,
++
mcount
*
sizeof
(
struct
stMenuInfo
)
)
;
// Очищаем "мусор".
// Почему mcount - 1? Потому что у нас отсчет не с 1, а с 0 и последний элемент это всегда = количество_меню - 1.
memset
(
&
mdata
[
mcount
-
1
]
,
0
,
sizeof
(
struct
stMenuInfo
)
)
;
mdata
[
mcount
-
1
]
.
mname
=
_strdup
(
mname
)
;
return
mcount
-
1
;
// возвращаем id последнего меню?
}

спасибо, надо учебники уже читать начать, уж больно интересны эти пляски с памятью

UPD:

чет рано обрадовался, игра-то вылетает все равно.

если убрать указатели на другие структуры из stMenuInfo, то все работает, но они нужны.

всё ещё в поисках помощи, посоны
 
Ответить с цитированием
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.