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

Байтовое хранилище данных - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Ошибка при построении Release в VC 2010 Express. http://www.cyberforum.ru/cpp-beginners/thread557759.html
Использую qt-win-opensource-4.8.1-vs2010 с VC 2010 Express. Проект разделён на три файла: mainwindow.h #include <QtGui> #include <QtCore> class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); };
C++ Структура и кое-что не понятно... Имеется такая структура struct Person { std::string surname; unsigned int year; bool operator < (const Person &sg) { return (this->year < sg.year); http://www.cyberforum.ru/cpp-beginners/thread557736.html
Найти все элементы, кратные 3 или 5. Сколько их? C++
Одномерные массивы, помогите исправить ошибки #include "stdafx.h" #include <iostream> #include <conio.h> #include <math.h> using namespace std; void main () { int m, i, s=0; for (i=0; i<20; i++)
C++ Написать программу, которая бы по введенному номеру единицы измерения (1-секунды, 2-минуты, 3-часы, 4-сутки) и заданному временному интервалу печатала
Написать программу, которая бы по введенному номеру единицы измерения (1-секунды, 2-минуты, 3-часы, 4-сутки) и заданному временному интервалу печатала бы соответствующее значение в минутах.
C++ Помогите пожалуйста))) http://www.cyberforum.ru/cpp-beginners/thread557696.html
Даны действительные числа a,b,c. Удвоить эти числа, если a>=b>=c, и заменить их абсолютными значениями ,если это не так.
C++ splipath Есть задание - написать программу, выводящую путь, откуда запущена программа. При чем путь надо разбить. Ну там логический диск, директория, имя файла, расширение и тд. Запускать надо с консоли) Сделал так: #include <direct.h> #include <stdlib.h> #include <stdio.h> #include <string.h> int main( void ) { char path_buffer; подробнее

Показать сообщение отдельно
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
25.04.2012, 19:35     Байтовое хранилище данных
Цитата Сообщение от 3BEPb_TyTa Посмотреть сообщение
Я так понимаю, проблема была в том что при создании string-объекта в стеке, получалось что строка(т.к. память под неё выделяется динамически) оказывалась в другой области памяти. И соответсвенно операции с указателем на этот объект выполнялись непонятно как. Я правильно понял? -)
Не совсем.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
string str; // создаём string
for( double i = 0; i < 10; i++ )  // зачем double?! =-O int или unsigned!
{
        getline(in, str); // записываем в str строку. в этом месте всё
                          // предыдущее содержимое удаляется.
                          // тут может произойти перевыделение внутреннего
                          // буфера с освобождением предыдущего
 
        stash->add(&str); // копируем память str, включая указатель
                          // на внутренний буфер;
                          // в следующей итерации этот же самый str
                          // будет переписан, и этот внутренний буфер
                          // может оказаться перевыделенным,
                          // а скопированный указатель-то по-прежнему
                          // будет указывать на старый (уже несуществующий)
                          // буфер
}
Не стоит так работать с non-POD классами.

Добавлено через 1 минуту
Цитата Сообщение от 3BEPb_TyTa Посмотреть сообщение
C++
1
2
3
4
5
6
string* str;
    for(double i = 0; i < 10; i ++){
        str = new string;
        getline(in, *str);
        stash->add(str);
    }
Угу. Динамически выделяете память. А освобождать кто-то где-то будет?
 
Текущее время: 13:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru