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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вычисление кол-ва предложений в строке http://www.cyberforum.ru/cpp-beginners/thread299295.html
Подскажие пожалуйста как написать программу,которая подсчитывает количество предложений в строке. Считать разделителем и точку и пробел. Организовать вычисления в отдельном потоке. Заранее спасибо...
C++ Очень срочно , через 2 дня сдача) (композиция, наследование) Разработать и реализовать диаграмму классов для описанных объектов предметной об-ласти, используя механизмы наследования и/или композиции. Проверить ее на тестовом примере, с демонстрацией всех... http://www.cyberforum.ru/cpp-beginners/thread299287.html
Алгоритм перевода чисел C++
Помогите пожалуйста! Надо мне написать алгоритм перевода из десятичного числа в 16 ричное число! Через стандартные функции не катит,и через указатели тоже! Он должен быть самым простым алгоритмом!...
C++ Позиции
Найти все натуральные числа не превосходящие n десятичная запись которых есть строго возрастающая или строго убывающая последовательность . Скажите мне пожалуйста как разбивать пробую с остатком...
C++ DrawGrid изменение размеров http://www.cyberforum.ru/cpp-beginners/thread299265.html
Доброе время суток! Объясните мне пожалуйста как автоматически изменять высоту и длину (размеры) окна DrawGrid Моя задача состоит в решение матриц (любой размерности(в пределах разумного !>100)), с...
C++ Заполнить матрицу соответствии образцу Заполнить матрицу соответствии образце Чистый Си подробнее

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

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

19.05.2011, 00:05. Просмотров 1282. Ответов 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? Или создается копия указателя, и память выделяется ему, но оригинальный указатель разве на будет указывать на эту же память, даже если в функции создалася его локальная копия? Не совсем понимаю этот момент, поясните, пожалуйста.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.