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

Освобождение памяти malloc free - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти угол исходя из координат мышки http://www.cyberforum.ru/cpp-beginners/thread822477.html
Есть 2 точки , первая это там где будет происходить отрисовка браша а вторая это указатель мыши . Нужно висчитывать угол от 0 до 360 что бы браш всегда смотрел в сторону мышки . Поиски по форуму ни...
C++ TaskKiller Приветствую вас, господа! Я хотел бы создать приложение, как-бы мини антивирус, которая бы проверяла наличие запущенных задач и завершала бы запрещенные. Я новичек, и мало чего знаю. Помогите мне... http://www.cyberforum.ru/cpp-beginners/thread822473.html
Создать стек, содержащий считанные из текстового файла координаты точек C++
Помогите пожалуйста . В текстовом файле записаны координаты материальных точек . Создать стек, содержащий считанные из текстового файла координаты точек. Рассчитать центр масс материальных точек,...
C++ Какой элемент останется в кольце последним, если начать по очереди удалять из списка каждый n элемент
Создать структуру с именем Subject с полями: фамилия, имя. Сформиро-вать замкнутое кольцо (односвязный список, у которого последний эле-мент хранит адрес первого) из нескольких структур. С клавиатуры...
C++ Метод класса TList http://www.cyberforum.ru/cpp-beginners/thread822450.html
Написать метод класса TList, аналогичный append, который добавляет элемент не в конце списка, а в его начале.
C++ Добавьте к АТД «очередь» функцию first Добавьте к АТД «очередь» функцию first, что получает первый элемент очереди, не удаляя его, и реализуйте ее аналогично функции del. В отличие от del, она не уничтожает первый элемент очереди (если он... подробнее

Показать сообщение отдельно
Systemes
0 / 0 / 0
Регистрация: 05.07.2012
Сообщений: 11

Освобождение памяти malloc free - C++

29.03.2013, 22:02. Просмотров 2421. Ответов 16
Метки (Все метки)

В общем работаю над расширением для php (для тренировки в php и в c++ сразу) Суть дела вот в чем, наткнулся на конвертер php массива в массив c++ , суть вот в чем, функция ест память! Я не умею обращаться с ф-й malloc и free и по этомц ситуация поставила меня в тупик.
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
void *php_array_to_c_array(zval *param,int type,int size,int *array_size)
{
  HashTable *param_ht = param->value.ht;
  zval **cur;
  void *params;
  void *array;
  int i,tmp_size = zend_hash_num_elements(param_ht);
  int id;
  zend_hash_internal_pointer_reset(param_ht);
  params = (void *)malloc(size * tmp_size);
  i = 0;
  while(zend_hash_get_current_data(param_ht,(void **)&cur) == SUCCESS)
    {
       if((*cur)->type == IS_ARRAY)
          {
              int new_array_size;
              void *array = php_array_to_c_array(*cur,type,size,&new_array_size);
              array = php_array_to_c_array(*cur,type,size,&new_array_size);
              params = realloc(params, (tmp_size + new_array_size) * size);
              memcpy(&((char*)params)[i*size],array,new_array_size * size);
              i += (new_array_size - 1);
              free(array);
          }
       else
          {
              switch(type)
                   {
                        case TO_C_FLOAT:
                            convert_to_double(*cur);
                            ((float*)params)[i] = (float)Z_DVAL_P(*cur);
                        break;
                        case TO_C_DOUBLE:
                            convert_to_double(*cur);
                            ((double*)params)[i] = Z_DVAL_P(*cur);
                        break;
                        case TO_C_INT:
                            convert_to_long(*cur);
                            ((int*)params)[i] = (int)Z_LVAL_P(*cur);
                        break;
                        case TO_C_LONG:
                            convert_to_long(*cur);
                            ((long*)params)[i] = Z_LVAL_P(*cur);
                        break;
                        case TO_C_UCHAR:
                        case TO_C_UBYTE: // yoya
                            convert_to_long(*cur);
                            ((unsigned char*)params)[i] = (unsigned char)Z_LVAL_P(*cur);
                        break;
                        case TO_C_SCHAR:
                            convert_to_long(*cur);
                            ((signed char*)params)[i] = (signed char)Z_LVAL_P(*cur);
                        break;
                        case TO_C_USHORT:
                            convert_to_long(*cur);
                            ((unsigned short*)params)[i] = (unsigned short)Z_LVAL_P(*cur);
                        break;
                        case TO_C_SHORT:
                            convert_to_long(*cur);
                            ((short*)params)[i] = (short)Z_LVAL_P(*cur);
                        break;
                        case TO_C_UINT:
                            convert_to_long(*cur);
                            ((unsigned int*)params)[i] = (unsigned int)Z_LVAL_P(*cur);
                        break;
                        case TO_C_STRING:
                            convert_to_string(*cur);
                            ((char **)params)[i] = estrdup(Z_STRVAL_P(*cur));
                        break;
                   }
          }
       zend_hash_move_forward(param_ht);
       i++;
    }
  if(array_size != NULL)
  *array_size = i;
  return (void *)params;
}
в общем я понял что нужно что-то сделать с переменное params, т.к. память выделяется, но не освобождается. Так что хелп если это возможно))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru