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

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

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

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

17.09.2012, 14:16. Просмотров 509. Ответов 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;
}
0
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++
подскажите как в программе удалить все что занесено в память и закрыть программу?

Удаление динамической памяти - C++
В книгах по С++ я читал про утечку памяти. Я решил создать программу, в которой будет выделаться 1 Гб памяти и не удаляться. Будучи...

Удаление new из динамической памяти - C++
Здравствуйте, у меня есть следующее присвоение: sign->numb = new int; Мне нужно от него избавиться в конце программы, но delete...

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

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

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

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

UPD

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

Вы что хотите-то?
0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,542
Завершенные тесты: 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. Компилятор может сделать, что хочет.
1
fridi
-8 / 40 / 1
Регистрация: 21.09.2009
Сообщений: 145
17.09.2012, 15:18  [ТС] #5
тему можно закрыть
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.09.2012, 15:18
Привет! Вот еще темы с ответами:

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

Удаление структуры из динамической памяти - C++
struct aTapeElement { char Operator; float Operand; aTapeElement *NextElement; }; Это кусок кода из 15-го урока книги...

Удаление объекта и освобождение памяти - C++
Есть вот такой код. Интересуют выделенные ф-и. Последняя ясна - мы просто возвращаем память нашей ОС. Предпоследняя уничтожает объект...

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.09.2012, 15:18
Ответ Создать тему
Опции темы

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