Дарк, ты не знаешь а на питоне как?*(type *)adress = value
Нет. И темка по С/С++Дарк, ты не знаешь а на питоне как?
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)
{
struct stMenuInfo *new_mn;
memset(&new_mn, 0, 0);
new_mn = (struct stMenuInfo *)realloc(mdata, (mcount + 1) * sizeof(struct stMenuInfo));
if (new_mn == NULL)
return NULL;
mdata = new_mn;
mdata[mcount].mname = _strdup(mname);
mcount++;
return mcount - 1;
}
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 последнего меню?
}
спасибо, надо учебники уже читать начать, уж больно интересны эти пляски с памятьюЕсли я понял тебя правильно.
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, то все работает, но они нужны.
всё ещё в поисках помощи, посоны
cmenu, pmenu - уберу (понял, как сделать без этого)А ты юзаешь их? Или что ты вообще хочешь сделать?
Указатели - это лишь указатели на объект, если ты его не создавал, то и обращаться к нему нельзя. Кидай код.cmenu, pmenu - уберу (понял, как сделать без этого)
а вот struct stButtonInfo *btn - это инфа о элементах меню. Элементы добавляются точно таким же способом.
ты про стрельбу в сторону из окна? там по клавишам синхракогда стреляю из машины пули отправляются не через ID_BULLET_SYNC через какой пакет они отправляются тогда