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

Выделение динамической памяти указателю в локальной функции - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вычисление кол-ва предложений в строке http://www.cyberforum.ru/cpp-beginners/thread299295.html
Подскажие пожалуйста как написать программу,которая подсчитывает количество предложений в строке. Считать разделителем и точку и пробел. Организовать вычисления в отдельном потоке. Заранее спасибо...
C++ Очень срочно , через 2 дня сдача) (композиция, наследование) Разработать и реализовать диаграмму классов для описанных объектов предметной об-ласти, используя механизмы наследования и/или композиции. Проверить ее на тестовом примере, с демонстрацией всех возможностей разработанных классов на конкретных дан-ных. Даны: Объект символ, умеющий печатать свое значение и отвечать на запрос о значении сво-его символьного поля. Объект «строка» переменной длины,... http://www.cyberforum.ru/cpp-beginners/thread299287.html
Алгоритм перевода чисел C++
Помогите пожалуйста! Надо мне написать алгоритм перевода из десятичного числа в 16 ричное число! Через стандартные функции не катит,и через указатели тоже! Он должен быть самым простым алгоритмом! Вот как реализовать это програмно: залаем с клавиатуры число,делим его на 16,записываем остаток,потом сравниваем если число равно от 1 до 10 то ничего не менять,а если больше 10 то записать букву! Что...
C++ Позиции
Найти все натуральные числа не превосходящие n десятичная запись которых есть строго возрастающая или строго убывающая последовательность . Скажите мне пожалуйста как разбивать пробую с остатком ну чет не идет к меня .
C++ DrawGrid изменение размеров http://www.cyberforum.ru/cpp-beginners/thread299265.html
Доброе время суток! Объясните мне пожалуйста как автоматически изменять высоту и длину (размеры) окна DrawGrid Моя задача состоит в решение матриц (любой размерности(в пределах разумного !>100)), с увеличение количества ячеек длина и высота не меняется должным образом. попробовал мудрить: void __fastcall TForm1::Button1Click(TObject *Sender) { a=StrToInt(Edit1->Text); if...
C++ Заполнить матрицу соответствии образцу Заполнить матрицу соответствии образце Чистый Си подробнее

Показать сообщение отдельно
Alecs12
1 / 1 / 0
Регистрация: 21.03.2011
Сообщений: 23

Выделение динамической памяти указателю в локальной функции - C++

19.05.2011, 00:05. Просмотров 1186. Ответов 2
Метки (Все метки)

Собственно, я не до конца понимаю, что происходит, поэтому прошу если кто может как можно доходчивее пояснить. Упрощенная версия кода приблизительно такая:
C++
1
2
3
4
5
6
7
8
9
10
11
12
 
void Initialize(char * cptr)
{
  cptr = new char[100];
}
 
void main()
{
  char * ptr;
  Initialize(ptr);
  printf(ptr);//если в этой строчке что не так выбачайте, суть в том, что мы используем потом этот указатель
}
Программа вываливается во время выполнения с ошибкой. Я знаю, что после выполнения функции все переменные, обьявленые в ней удаляются, а если были изменения с переменными-параметрами, то при передачи по значению изменения производятся с локальной копией, поэтому не затрагивают оригинальные переменные. Но тут передается указатель, то есть передача же не по значение, а по указателю, то есть изменения над этой переменой производятся не над копией, а над этим же указателем. Мы выделяем указателю память и устанавливаем его на начало этого сегмента памяти.
Но программа вываливается в рантайме, значит указатель указывает в непонятно что. Что, при выходе из локальной памяти на все new в не' делается delete? Или создается копия указателя, и память выделяется ему, но оригинальный указатель разве на будет указывать на эту же память, даже если в функции создалася его локальная копия? Не совсем понимаю этот момент, поясните, пожалуйста.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru