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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
kess
0 / 0 / 0
Регистрация: 08.12.2008
Сообщений: 27
#1

malloc/realloc - C++

28.07.2009, 16:35. Просмотров 1336. Ответов 7
Метки нет (Все метки)

есть следующий код:
C++
1
2
3
4
5
6
7
8
9
mmlist=(_mathmod*)malloc(sizeof(_mathmod));
                  *mmlist=_mathmod(mm);
                  int i=0;
                  while(i<10)
                  {
                     i++;
                     mmlist=(_mathmod*)realloc(mmlist,(i+1)*sizeof(_mathmod));
                     mmlist[i]=_mathmod(mm);//mm-указатель на строку типа char*
                  }
При этом в классе есть 4 поля.
Вопрос:
Почему не инициализируется первое поле экземпляра класса если ему передаётся ненулевой указатель при нулевом указателе всё работает как надо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.07.2009, 16:35     malloc/realloc
Посмотрите здесь:

Malloc realloc и C++ - C++
Подскажите, в C++ 11 выделение памяти по прежнему &quot;нормально&quot; выделять с помощью malloc и изменять размер realloc ? Или это уже прошлое?...

malloc, realloc - C++
У меня задан одномерный динамический массив таким образом: int *m1=new int; //n-количество элементов, вводится пользователем Далее этот...

Помогите переделать malloc в realloc! - C++
Нужно что бы распределение памяти было realoc-ом, помогите пожалуйста Красным выделен malloc //---------------------ZADANIE...

функции на основе realloc, malloc - C++
Подскажите как сократить написание &quot;realloc&quot;, а то надоели эти писанины))) вот сделал уже следующее: size_t GetSize(void* Array) ...

Работа с памятью через malloc,realloc и free - C++
Вот начал работать с памятью в c++ и появилось несколько вопросов. 1 - r = (int *)malloc((1)*sizeof(int)); как я понимаю, эта запись...

Что быстрее/эффективнее malloc/realloc или new/delete? - C++
Всем привет. Год программировал на СИ под микроконтроллеры... Начал изучать с++... Всё ново, интересно... Доковырялся до STL... В процессе...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
odip
Эксперт С++
7155 / 3295 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
28.07.2009, 16:43     malloc/realloc #2
Полный код где ?
И что такое "первое поле экземпляра класса" ?
"ему передаётся ненулевой указатель" - кому ему ? где передается ?
Короче ничего не понял.
kess
0 / 0 / 0
Регистрация: 08.12.2008
Сообщений: 27
28.07.2009, 16:55  [ТС]     malloc/realloc #3
есть класс
C++
1
2
3
4
5
6
7
8
9
10
11
12
class _mathmod
{
private:
   char *fname;
   _math *pointer;
   char *mmdesc;
   unsigned short *tact;
   unsigned short *queue;
   bool *active;
public:
   _mathmod::_mathmod(char *);
}
есть конструктор:
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
_mathmod::_mathmod(char *mnm)
{
   if(strlen(mnm)<=11&&strlen(mnm)>0)
   {
      fname=new char[strlen(mnm)];
      fname=mnm;
      pointer=NULL;
      mmdesc=NULL;
      tact=NULL;
      queue=NULL;
      active=NULL;
   }
   else try {throw((unsigned short)1);}
   catch(unsigned short err)
   {
      fname=NULL;
      pointer=NULL;
      mmdesc=NULL;
      tact=NULL;
      queue=NULL;
      active=NULL;
      Application->MessageBoxA("Введено недопустимое значение для параметра"
                " - идентификатор математической модели.","Ошибка",MB_ICONSTOP);
   }
}
есть вышеуказанный код.
при этом в поле fname не записывается то, что передано в конструктор, при ошибочном значении NULL записывается нормально.

Не по теме:

сорри за некоректный вопрос,туплю уже.

ISergey
Maniac
Эксперт С++
1372 / 883 / 52
Регистрация: 02.01.2009
Сообщений: 2,652
Записей в блоге: 1
28.07.2009, 16:59     malloc/realloc #4
malloc не вызывает конструктор класса, используй new/delete;
kess
0 / 0 / 0
Регистрация: 08.12.2008
Сообщений: 27
28.07.2009, 18:46  [ТС]     malloc/realloc #5
Цитата Сообщение от ISergey Посмотреть сообщение
malloc не вызывает конструктор класса, используй new/delete;
вы хотя бы код смотрели, я конструктор вызываю сам!
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
28.07.2009, 18:52     malloc/realloc #6
Код
fname=new char[strlen(mnm)];
fname=mnm;
Вот этот момент сомнителен. Память выделил, но строку не записал, а только присвоил fname'y указатель на mnm; потом содержимое mnm наверняка теряется и fname указывает уже непонятно на что. Вобщем, пробуй так сделать
Код
fname=new char[strlen(mnm)+1]; //+1 для нуль-символа
strcpy(fname, mnm);
Rififi
2338 / 1053 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
28.07.2009, 19:04     malloc/realloc #7
я конструктор вызываю сам!
несомненно, это новое слово в с++ извращениях, достойное вхожения в анналы (не путать с аналом) истории, явно чувствуется почерк профи :lol:
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.07.2009, 18:58     malloc/realloc
Еще ссылки по теме:

realloc - C++
здраствуйте! решил накатать такой класс #include &lt;stdlib.h&gt; template &lt;typename TYPE&gt; class List { private: TYPE*...

realloc - C++
#include &lt;iostream&gt; using namespace std; int main() { int size=0; cout&lt;&lt;&quot;enter size array: &quot;; cin&gt;&gt;size; int...

realloc - C++
Доброго времени суток, есть код, в котором динамически выделяется память под массив, затем этот массив инициализируется с клавиатуры и...

Функция realloc - C++
Помогите правильно записать функцию realloc /*9. Дан одномерный массив из 100 элементов, состоящий из случайных вещественных чисел в...


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

Или воспользуйтесь поиском по форуму:
Alexandoros
227 / 65 / 4
Регистрация: 02.06.2009
Сообщений: 280
29.07.2009, 18:58     malloc/realloc #8
Собственно тебе нужно почитать книжку по основам ооп в с++.

C++
1
2
 fname=new char[strlen(mnm)];
 fname=mnm;
бессмысленно.

C++
1
2
else try {throw((unsigned short)1);}
   catch(unsigned short err)
бессмысленно.

C++
1
*mmlist=_mathmod(mm);
Исходя из твоего кода бессмысленно.

Читать нужно про конструктор, конструктор копирования и зачем он нужен, переопределение оператора =.
Yandex
Объявления
29.07.2009, 18:58     malloc/realloc
Закрытая тема Создать тему
Опции темы

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