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

Проблемы при работе с динамическим распределением памяти - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Два отрезка http://www.cyberforum.ru/cpp-beginners/thread336371.html
Добрый вечер. Напишите пожалуйста код программы на Си(не С++). Даны координаты двух отрезков х1,у1 и х2,у2, нужно найти точку пересечения этих отрезков. Как её решить я знаю, а вот как написать саму программу не знаю. Для нахождения пересечения надо составить два уравнения (x-x1)/(x2-x1)=(y-y1)/(y2-y1) и (x-x3)/(x4-x3)=(y-y3)/(y4-y3), потом найти х и у, так как прямые пересекаются, то у них...
C++ Обращение к объекту с помощью перегруженной операции У меня есть перегруженная операция (), возвращающая rvalue int Array::operator()( int a, int b ) const { if ( a < 0 || b < 0 || a >= row || b >= column ) { cerr << "\nError: one of subscriptes is out of range\n"; exit( 1 ); } else http://www.cyberforum.ru/cpp-beginners/thread336356.html
C++ Рандом с плавающей точкой, как?
Здравствуйте, как реализовать rand() или другой рандом с плавающей точкой, т.е. например чтобы он мне выводил число от 1.0 до 2.5?
Выход из программы и самопроизвольное выполнение пункта C++
При запуске программы открывается меню. Если выбрать игра, то все в норме. Если выбрать помощь, то открывается помощь и сразу в след за ней открывается игра( как так?), если выбрать третий пункт, то выводится сообщение из третьего пункта, а затем открывается игра( почему?). Почему игра открывается сама по себе всегда? Как сделать выход из программы, то есть при нажатии "3", чтобы cmd окно...
C++ Проверка на цифру http://www.cyberforum.ru/cpp-beginners/thread336311.html
Написал относительно простую консольную игру. При запуске открывается меню, и там 3 пункта. Если человек вводит "4", то появляется сообщение об ошибке( это я смог реализовать), но если ввести любой другой символ( кроме цифры), например любую букву, то программа переходит в бесконечный цикл, и программа начинает выдавать текст, который выдавать она не должна. Как сделать проверку что это именно...
C++ Помогите понять задачу в теории Не могу понять как должна и что считать задача,помогите. Дана квадратная матрица порядка n. Получить вектор Аb, где b - вектор, элементы которого вычисляются по формуле b i = 1/i^2+2 , если i- четное b i = 1/i в противном случае (i=1,..., n) подробнее

Показать сообщение отдельно
mutari
0 / 0 / 0
Регистрация: 26.07.2011
Сообщений: 8
27.07.2011, 00:49  [ТС]     Проблемы при работе с динамическим распределением памяти
Нет, суть функции в другом. В общем это часть dll библиотеки для работы с dhcp сервером, он должен выдавать ip в виде 172.18.x.x, где x.x увеличивающийся на один с каждым запросом адрес - в двоичном виде соответственно 16 бит (ip адрес = 32 бита).
Данная функция tau как раз увеличивает ip на 1. А делает это так:
1) получает 16 бит предыдущего адреса(чтобы знать к чему прибавлять единицу)
2) переводит в десятичную СС
3) прибавляет 1
4) переводит обратно в двоичную

и тут то вся проблема, если в пункт 1) пришло число вида, например "0000100011100110" (16 разрядов), то после пункта 4) мы получим "100011100111" (12 разрядов). Поэтому мне нужно дописать нули спереди. И я просто генерирую нужное количество и конкатенирую строки. Сейчас всё хорошо, но при выполнении delete [] zero выдаёт ошибку, описанную выше.
Плюс ещё проблема в том, что я не могу передать этот массив в другую функцию с таким прототипом:
void bintoip (char *x1,char *x2);
используя такой вызов:
bintoip(zero,x2);

При выполнении любых действий с x1 в bintoip вызывает исключение:
Необработанное исключение в "0x000000013f6d1627" в "Test_c.exe": 0xC0000005: Нарушение прав доступа при чтении "0x0000000000000000".


Цитата Сообщение от alexcoder Посмотреть сообщение
младшие значения по младшим адресам
itoa делает наоборот - в позиции [0] записан старший разряд, в позиции [15] - малдший.

Я понимаю, что всё выглядит мудрёно, но я буду очень благодарен, если мы найдём решение этой проблемы!

Добавлено через 27 минут
Цитата Сообщение от mutari Посмотреть сообщение
Плюс ещё проблема в том, что я не могу передать этот массив в другую функцию с таким прототипом:
void bintoip (char *x1,char *x2);
используя такой вызов:
bintoip(zero,x2);
При выполнении любых действий с x1 в bintoip вызывает исключение:
Необработанное исключение в "0x000000013f6d1627" в "Test_c.exe": 0xC0000005: Нарушение прав доступа при чтении "0x0000000000000000".
Это уже не актульно, в этом я разобрался.
Осталось только разобраться в освобождении памяти.
 
Текущее время: 05:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru