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

Динамеческая память. Исключение - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ max(x,y,z) http://www.cyberforum.ru/cpp-beginners/thread654655.html
max(x,y,z) и (x,y,z) , как решить помогите плз!
C++ Считывание структуры из файла(бинарно) Написал прогу которая работает со списком: (По завершению программа - записывает полученный список в файл(бинарно)) Потом, когда программа открывается снова - первым делом она считывает список из файла... Вроде - всё норм работает но проблема следующая: Почему-то я не могу добавить э-т в список после того, как программа считает из файла 1э-т списка(программа всё правильно отображает что в... http://www.cyberforum.ru/cpp-beginners/thread654654.html
C++ Вывести все нечетные числа в заданном интервале
Кому не трудно помочь с вторым и третьим вопросом. Буду очень благодарен.Спасибо.
С.Прата глава 5(циклы) зад.4 C++
Помогите с задачей: Вы продаёте книгу. Напишите программу, которая позволит ввести помесячные объемы продаж в течении года(в кол-ве книг, а не в деньгах). программа должна использовать цикл, в котором выводиться приглашение с названием месяца, применяя массив указателей на char( или массив объектов string) инициализированный строками - названиями месяцев, и сохраняя введенные занчения в...
C++ double быстрее всех? http://www.cyberforum.ru/cpp-beginners/thread654632.html
В книге Прата написано что int быстрей... я не поверил на слово и решил проверить. Написал простую программу: #include <iostream> #include <time.h> template<class T> void frequency_of_primes (int n, T number) { T Ttemp; for(int i = 0; i<n; i++)
C++ Прокомментировать код #include <iostream.h> #include <conio.h> #include <stdio.h> #include <iomanip.h> #include <stdlib.h> int main() { int iill; int n,mins,mm=1; подробнее

Показать сообщение отдельно
DU
1478 / 1054 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
19.09.2012, 23:56     Динамеческая память. Исключение
все важно.
по сути - сами себе жизнь усложнили. советую переписать код. вместо динамических массивом символов использовать std::string. кода будет меньше, он будет понятнее и баги быстрее уйдут.
нифига не понял что вообще делается. по быстрому попробовал залечить повреждение памяти.
что сделал:
между строкой 22 и 23 вставляем
curParent[0] = 0;
это хоть начнет влиять на другое место, которое тоже какое-то непонятное и его я подправил
C++
1
2
3
4
5
6
7
8
9
10
  FolderListItem(char *folderName, int folderLevel, char *parentFolderName,FolderListItem* nextFolder = NULL)
  {
    strcpy_s(name, MAX_FOLDER_NAME, folderName);
    if (parentFolderName != NULL)
      // почему MAX_FOLDER_NAME * 30 ???
      //strcpy_s(parentName, MAX_FOLDER_NAME * 30, parentFolderName);
      strcpy_s(parentName, MAX_FOLDER_NAME, parentFolderName);
    level = folderLevel;
    next = nextFolder;
  }

После этого начало падать в месте удаления массивом. т.е. трабла осталась и проявилась по другому или просто новая проблема вылезла. Разбираться лениво.
Короче год - говно (не обижайтесь). Есть какие-то причины не использовать std::string? Если нет, то перепишите, используйте std::string и не будет проблем с ручным управлением памяти и копированием, с которыми вы скорее всего и намудрили (там на еденичку больше положенного скопировали, сям что-то не так сделали.)
 
Текущее время: 15:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru