Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / вопрос по malloc() / 23 сообщений из 23, страница 1 из 1
16.11.2006, 18:41
    #34134590
Tubrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по malloc()
Код: plaintext
1.
2.
myClass	*ptr;
ptr = (myClass *)malloc(sizeof(myClass));

как передать в конструктор myClass параметры, аналогично тому как это делается в new:

Код: plaintext
1.
ptr = new CParser_0(param1, param2);
...
Рейтинг: 0 / 0
16.11.2006, 19:59
    #34134769
onstat-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по malloc()
Tubrik
Код: plaintext
1.
2.
myClass	*ptr;
ptr = (myClass *)malloc(sizeof(myClass));

как передать в конструктор myClass параметры, аналогично тому как это делается в new:

Код: plaintext
1.
ptr = new CParser_0(param1, param2);


malloc не будет вызать конструктор , он просто выделит память.
Поэтому параметры ему никчему.

Вопрос нужно ставить как то по другому.
Какова цель сей затеи?
...
Рейтинг: 0 / 0
16.11.2006, 21:11
    #34134875
blinded
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по malloc()
может быть автор хотел разместить объект по извеcтному адресу ну тогда наверное так?
void* buf = malloc(sizeof(MyClass));
а потом
MyClass* ptr= new (buf) MyClass(...);
...
Рейтинг: 0 / 0
16.11.2006, 21:38
    #34134901
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по malloc()
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
void *rptr = malloc( sizeof(myClass) );
myClass	*ptr = new (rptr) myClass( param1, param2 );

....

ptr->~myClass();
free( rptr );
[/quot]
...
Рейтинг: 0 / 0
16.11.2006, 22:57
    #34134970
Tubrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по malloc()
Цель - выделить память под объект, который должен инициализироваться через конструктор с параметрами, не используя new.
...
Рейтинг: 0 / 0
16.11.2006, 23:01
    #34134976
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по malloc()
TubrikЦель - выделить память под объект, который должен инициализироваться через конструктор с параметрами, не используя new.Каким компиллятором вы пользуетесь?
...
Рейтинг: 0 / 0
16.11.2006, 23:05
    #34134981
Tubrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по malloc()
mayton TubrikЦель - выделить память под объект, который должен инициализироваться через конструктор с параметрами, не используя new.Каким компиллятором вы пользуетесь?
Microsoft Visual C++ .NET
...
Рейтинг: 0 / 0
16.11.2006, 23:10
    #34134988
Tubrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по malloc()
Что-то выходит, что malloc() вообще не вызывает никакой конструктор.
...
Рейтинг: 0 / 0
16.11.2006, 23:20
    #34134993
Tubrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по malloc()
Если я правильно понял, то через malloc можно создавать динамические объекты, но не будут задействованы конструкторы и деструкторы, т.е. нужно это делать через любые другие методы класса?
...
Рейтинг: 0 / 0
17.11.2006, 00:55
    #34135072
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по malloc()
Уфф... Иногда на этот форум заглядывают люди, которые программируют микроконтроллеры. Для них - актуально использовать чистый "С". Но в вашем случае я не вижу смысла делать какие либо исследования. Вы пишете на MS C++ ? Отлично! Используете ООП? Великолепно! Так используйте правильные методологии. Не стройте велосипедов. Запомните: malloc() просто выделяет память. Никаких конструкторов он не вызывает и никакого отношения к ООП он не имеет.
...
Рейтинг: 0 / 0
17.11.2006, 09:43
    #34135379
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по malloc()
TubrikЦель - выделить память под объект, который должен инициализироваться через конструктор с параметрами, не используя new.

Каков в этом смысл?
...
Рейтинг: 0 / 0
17.11.2006, 10:00
    #34135427
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по malloc()
TubrikЦель - выделить память под объект, который должен инициализироваться через конструктор с параметрами, не используя new.
Код: plaintext
1.
2.
A *a=(A*)malloc(sizeof(A));
(*a)=A(params);
...
Рейтинг: 0 / 0
17.11.2006, 10:02
    #34135437
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по malloc()
TubrikЧто-то выходит, что malloc() вообще не вызывает никакой конструктор.

malloc - функция из RTL языка C, о конструкторах она не имеет никакого понятия. Даже не знает, что это такое. Поэтому вызывать их она ну никак не может.
...
Рейтинг: 0 / 0
17.11.2006, 11:16
    #34135755
blinded
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по malloc()
я чего-то не пойму, при вызове new(buf) A(param) память не выделяется, объект размещается( вызывается конструктор) по указанному адресу. чего еще надо? чтобы слова new не было? ну так никак не получится
...
Рейтинг: 0 / 0
17.11.2006, 11:23
    #34135781
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по malloc()
blindedя чего-то не пойму, при вызове new(buf) A(param) память не выделяется, объект размещается( вызывается конструктор) по указанному адресу. чего еще надо? чтобы слова new не было? ну так никак не получится

У меня получилось. :)
...
Рейтинг: 0 / 0
17.11.2006, 12:41
    #34136175
Barlone
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по malloc()
AkhУ меня получилось. :)
Ну-ну.
Код: plaintext
1.
2.
3.
4.
5.
6.
void *z;
z=malloc(sizeof(string));
memset(z, 255 ,sizeof(string)); /// просто в памати помусорили...
free(z); 
string *a=(string *)malloc(sizeof(string));
(*a)=string("test"); /// бабах - все упало...
...
Рейтинг: 0 / 0
17.11.2006, 13:08
    #34136324
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по malloc()
#define ya_ne_ispolsuyu_new new
...
Рейтинг: 0 / 0
17.11.2006, 13:40
    #34136489
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по malloc()
Barlone AkhУ меня получилось. :)
Ну-ну.
Код: plaintext
1.
2.
3.
4.
5.
6.
void *z;
z=malloc(sizeof(string));
memset(z, 255 ,sizeof(string)); /// просто в памати помусорили...
free(z); 
string *a=(string *)malloc(sizeof(string));
(*a)=string("test"); /// бабах - все упало...


Да? А в чем дело?
...
Рейтинг: 0 / 0
17.11.2006, 14:05
    #34136616
Barlone
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по malloc()
Ну дело в вызове перегруженного оператора присваивания для неинициализорованного объекта.
...
Рейтинг: 0 / 0
17.11.2006, 14:12
    #34136659
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по malloc()
BarloneНу дело в вызове перегруженного оператора присваивания для неинициализорованного объекта.

Тогда да. Получается дырка. Инициализация и присваевание вещи разные.
...
Рейтинг: 0 / 0
17.11.2006, 15:04
    #34136934
blinded
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по malloc()
мы тут классно оттянулись, а вот автор куда-то смылся, Хоть бы пояснил поподробнее чегоже все-таки хотел добится
...
Рейтинг: 0 / 0
17.11.2006, 15:08
    #34136963
Barlone
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по malloc()
blinded , ваш ответ конечно правильный, только автор вопрса этого не понял :)
...
Рейтинг: 0 / 0
17.11.2006, 21:48
    #34137982
Tubrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по malloc()
Никуда я не смывался, все понял) и всем признателен за ответы. Честное слово)
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / вопрос по malloc() / 23 сообщений из 23, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]