Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.07.2009, 16:59   #11
BeNN
 
Регистрация: 05.07.2009
Сообщений: 6
По умолчанию

Спасибо, попробую. Ну уж очень хочется сделать через malloc =)
BeNN вне форума Ответить с цитированием
Старый 08.07.2009, 03:18   #12
Фенрир
fenryrroa@mail.ru
Пользователь
 
Регистрация: 20.01.2009
Сообщений: 10
По умолчанию

Код:
  w = (int *) malloc(sizeof(int) *(kolvo+kol));
Фенрир вне форума Ответить с цитированием
Старый 08.07.2009, 05:26   #13
ISergeyN
Maniac
Форумчанин
 
Аватар для ISergeyN
 
Регистрация: 03.01.2009
Сообщений: 450
По умолчанию

Цитата:
Сообщение от profi Посмотреть сообщение
Возможно через malloc, но разницы не вижу. Просто через new короче и проще. Нельзя очистить память под указатель *a так как вы под него в функции yvel её не выделяли.
Да ну здрасте.. malloc и new доволи сильно отличаются..
В даном коде ладно. но вот примерно в таком случее будет проблема

Код:
#include <iostream>


class Employee{
	int *data;
public:
	Employee () {
		data = new int; //or malloc
		*data = 10;
		std::cout << "Employee::Employee\n";
	}
	~Employee () {
		delete data;	//or free
		std::cout << "~Employee::Employee\n";
	}

	int get(){
		return *data;
	}
};


int main()
{
	Employee e;
	std::cout << e.get() << '\n'; //ok;

	Employee *en = new Employee;
	std::cout << en->get() << '\n'; //ok;
	delete en;

	Employee *em = (Employee*)malloc(sizeof(Employee));
	std::cout << em->get() << '\n'; // bug;
	free(em);

	return 0;
}
Стандартные библиотеки разработаны с учетом многолетнего опыта лучших программистов и они не больны "детскими болезнями крутизны в программизме"....
ISergeyN вне форума Ответить с цитированием
Старый 08.07.2009, 13:27   #14
Фенрир
fenryrroa@mail.ru
Пользователь
 
Регистрация: 20.01.2009
Сообщений: 10
По умолчанию

malloc не вызывает конструктора, а так все ок.
Фенрир вне форума Ответить с цитированием
Старый 08.07.2009, 14:57   #15
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Цитата:
В даном коде ладно
Так я про данный случай и говорил. Кстати лучше все таки пользоваться оператором new для выделения памяти.

Последний раз редактировалось profi; 09.07.2009 в 00:37. Причина: Сори, спешил.
profi вне форума Ответить с цитированием
Старый 09.07.2009, 00:06   #16
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Ну во-первых new - это оператор, а не функция.
А во-вторых в языке С нет такого оператора =)
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 09.07.2009, 02:52   #17
ISergeyN
Maniac
Форумчанин
 
Аватар для ISergeyN
 
Регистрация: 03.01.2009
Сообщений: 450
По умолчанию

Цитата:
Сообщение от Blade Посмотреть сообщение
Ну во-первых new - это оператор, а не функция.
А кто сказал что new это функция...
Стандартные библиотеки разработаны с учетом многолетнего опыта лучших программистов и они не больны "детскими болезнями крутизны в программизме"....
ISergeyN вне форума Ответить с цитированием
Старый 09.07.2009, 03:10   #18
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Цитата:
Сообщение от ISergeyN Посмотреть сообщение
А кто сказал что new это функция...
profi сказал постом выше. Но потом его исправил...
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 09.07.2009, 04:14   #19
ISergeyN
Maniac
Форумчанин
 
Аватар для ISergeyN
 
Регистрация: 03.01.2009
Сообщений: 450
По умолчанию

Цитата:
Сообщение от Blade Посмотреть сообщение
profi сказал постом выше. Но потом его исправил...
хм.. сразу и не заметел.
Стандартные библиотеки разработаны с учетом многолетнего опыта лучших программистов и они не больны "детскими болезнями крутизны в программизме"....
ISergeyN вне форума Ответить с цитированием
Старый 09.07.2009, 12:46   #20
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Я просто думал про функцию malloc, а писал ответ про оператор new вот и получилось, что new это функция .
profi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка:*** glibc detected *** free(): invalid next size (fast): 0x0807dc70 *** ciaonataha Общие вопросы C/C++ 3 05.05.2009 16:58
Проблемы с выделением динамической памяти malloc (recalloc) slips Общие вопросы C/C++ 6 29.04.2009 19:27
DLL. Ошибка при Form1.Free Roof Общие вопросы Delphi 3 26.07.2008 01:21
Free Pascal(2.0.4) ошибка: Error while linking Акашаев Нурлан Паскаль, Turbo Pascal, PascalABC.NET 2 04.08.2007 10:10