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

Указатель при инициализации не равен NULL - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Определить, можно ли построить треугольник с длинами сторон, равным этим числам http://www.cyberforum.ru/cpp-beginners/thread836972.html
1)Даны три положительных числа. Определить, можно ли построить треугольник с длинами сторон, равным этим числам. Если можно, то ответить на вопрос, является ли он остро угольным.
C++ Передать значение переменной из .cpp в .h есть переменная, чье значение я хочу передать из .cpp в .h как это лучше сделать? спасибо http://www.cyberforum.ru/cpp-beginners/thread836970.html
C++ Сравнение изображений
ДОБРОЕ ВРЕМЯ СУТОК, уважаемые программисты! У меня будет такой вопрос: Как можно узнать содержимое JPEG файла для попикселного сравнения его с другим JPEG файлом; как можно это реализовать с помощью языка С++? Добавлено через 14 часов 35 минут Что, невозможно открыть содержимое JPEG файла?
C++ Разница во времени
Даны две строки с датами : 20:15:06, 23:26:19 (ЧЧ:ММ:СС). Нужно вычислить разность между временами в минутах.
C++ Работа с файлами C++ http://www.cyberforum.ru/cpp-beginners/thread836960.html
Доброго времени суток. Написал программу с выводом в файл, но она выводит совсем левое число, скажите где тут косяк? Сильно не материте я в С++ новичек. #include<stdio.h> #include<math.h> void print(int); int main() { int y=0; FILE * fo; fo=fopen("fajl6.txt","wt"); for(int i=1; i<=5; i++);
C++ Подскажите, как преобразовать строку с IP адресом в число и обратно Есть IP адрес в std::string "192.168.1.1", нужно преобразовать его в число, а IP адрес числом преобразовать обратно, не используя сторонних библиотек... Помогите пожалуйста. подробнее

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

Указатель при инициализации не равен NULL - C++

13.04.2013, 21:36. Просмотров 818. Ответов 8
Метки (Все метки)

Здравия желаю!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
myClass myClass::operator=(myClass iniOb)
{
    char *temp; //Указатель на копию массива из объекта iniOb
 
    //Выделение памяти под копируемый массив
    try{tempNum = new char[iniOb.Len];}
    catch(std::bad_alloc){throw;}
 
    //Заполнение массива
    for(unsigned int i=0; i<iniOb.Len; i++)temp[i]=iniOb.Ptr[i];
 
    if(Ptr)//И вот здесь ошибка
    {
        //Освобождение памяти из-под старого массива объекта, стоящего слева от =
        delete []Ptr;
    }
 
    //Указателю-переменной из левого объекта присваивается адрес копии массива
    Ptr=temp;
    //длине массива левого объекта присваивается длина массива правого
    Len=iniOb.Len;
    return *this;
}
 
int main()
{
    myClass a("-12");
    myClass b=a;
    return 0;
}
При инициализации b указатель принимает ненулевое значение(при отладке пишет temp=0xcccccccc, а не NULL(0x00000000)). Программа видя не нуль вызывает delete []Ptr;. Вылетает
Необработанное исключение по адресу 0x637B7508 (msvcr110d.dll) в ConsoleApplication7.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xCCCCCCC0.
Убрать delete нельзя, ибо возвращение памяти необходимо при присваивании уже инициализированному объекту.
Что с этим сделать можно?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru