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

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

Войти
Регистрация
Восстановить пароль
 
fridi
-8 / 40 / 1
Регистрация: 21.09.2009
Сообщений: 145
#1

Удаление памяти - C++

17.09.2012, 14:16. Просмотров 504. Ответов 4
Метки нет (Все метки)

Здравствуйте! есть функция
char * systeminfo::getUserName()
{
char *buf=new char [20];
strcpy(buf,"aaa");
return buf;
}
как правильно удалять такую память?
main()
{
char *sysName=systeminfo::getUserName();

//delete[]sysName;//так удаляется полностью вся память на что указывает sysName;
//ок произведем небольшой опыт.
int a_sysName=(int)sysName;//Определяем адрес на что указывает sysName; a_sysName=&buf[0];
//настроим еще один указатель на эту область памяти
char *pt=(char*)a_sysName; //Берем адресс
//Теперь удаляем указатель оригинальный
delete sysName;
/* Вот дальше идет интересно почему pt не указывает на строку "aaa"?
Ведь я только удалял указатель sysName а не на что он указывает стало быть строка по адресу
в a_sysName -адресс первый байт там должна хранится "aaa";
*/
Вообщем почему когда я удаляю
delete sysName;
память удаляется так-же как если бы я ее удалил через
delete[] sysName;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.09.2012, 14:16     Удаление памяти
Посмотрите здесь:

удаление памяти - C++
подскажите как в программе удалить все что занесено в память и закрыть программу?

Удаление памяти - C++
#include <stdio.h> #include <math.h> using namespace std; // класс точки плоскости class Point2 { private: int x; ...

Удаление динамической памяти - C++
Всем здрасьте. Имеется вот такая структура. struct ModelType { DWORD FVF; IDirect3DVertexBuffer9* vertexBuffer; ...

Удаление выделенной памяти - C++
есть такой класс: выделяю память под element *ptemp = new element; и iris *temp = new iris; нужно ли отдельно удалять new iris?? ...

Удаление выделенной памяти - C++
#include <iostream> using namespace std; int main() { int localVariable = 5; int * pLocal=...

Удаление памяти посредством delete[] - C++
Добрый день! Столкнулся с проблемой: при удалении выделенной памяти, программа зависает, будто не способна выполнить данный оператор....

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xADMIRALx
67 / 61 / 1
Регистрация: 09.06.2012
Сообщений: 291
17.09.2012, 14:37     Удаление памяти #2
fridi, Тогда уже не удаляйте а очищайте,если она вам потом понадобится

иначе попробуйте не в указатель заносить,а в обыкновенный чаровский массив..

UPD

Ну а если вам нужен именно указатель *sysName,то присваивайте ему значение а не адрес
kotleta
42 / 42 / 11
Регистрация: 13.09.2012
Сообщений: 196
17.09.2012, 14:47     Удаление памяти #3
Я скорее всего просто плохо соображаю, но то, что вы написали в первом посте, я в упор не могу понять..

Вы что хотите-то?
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
17.09.2012, 15:01     Удаление памяти #4
C++
1
2
3
4
5
6
char * systeminfo::getUserName()
{
char *buf=new char [20];
strcpy(buf,"aaa");
return buf;
}
C++
1
char *sysName=systeminfo::getUserName();
Удаляться должно через delete[].

C++
1
delete sysName;
Это UB. Компилятор может сделать, что хочет.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.09.2012, 15:18     Удаление памяти
Еще ссылки по теме:

Удаление объекта, созданного в динамической памяти - C++
Здравствуйте! Подскажите, пожалуйста, правильное решение такой проблемы (возможно, это и не проблема вовсе :) . Вот фрагмент кода: ...

Удаление вектора из области динамической памяти. - C++
Всем привет! Прошу разъяснить. Как правильно удалить содержимое вектора? class Coordinate { public: Coordinate() {} int...

Удаление памяти, на которую ссылается указатель - C++
Всем привет. Такой вопрос, что станет с указателем на объект, если этот объект удалить через delete? У меня есть пользовательский класс...

Освобождение памяти, удаление бинарного дерева - C++
Добрый день. Написал программу, которая ищет в файле неиспользуемые переменные, т.е. те, которые объявлены. Всё в общем-то работает, но...


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

Или воспользуйтесь поиском по форуму:
fridi
-8 / 40 / 1
Регистрация: 21.09.2009
Сообщений: 145
17.09.2012, 15:18  [ТС]     Удаление памяти #5
тему можно закрыть
Yandex
Объявления
17.09.2012, 15:18     Удаление памяти
Ответ Создать тему
Опции темы

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