Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Двумерный вектор: можно ли как-то перегрузить [] чтобы доступ был [0, 0] http://www.cyberforum.ru/cpp-beginners/thread1244833.html
У меня есть двумерный вектор, можно как-то перегрузить чтобы доступ был ? А то сейчас сделал через прокси-класс , но все-таки хотелось бы вариант с одинарными.
C++ Возвращаемый тип конструктора копирования в абстрактном классе
Здравствуйте! Есть абстрактный класс (с "чистыми" виртуальными функциями), и в нем необходимо явно определить конструктор копирования. Но если написать, что возвращаемый тип - сам класс, то...
Найти ошибку в программе C++
#include<iostream> #include<stdio.h> #include<vector> using namespace std; int main(){ int n; cin>>n; vector<int> g;
C++ Float показывает 0.00000 int n; float f; for(int i = 1; i<5; i++) { lvl.n = 1; stamina.n = 10+(lvl.n*2); Int.n = 10+(lvl.n*2); hp.n = 100+(stamina.n*4)+(lvl.n*2*4); mp.n = 50+(Int.n*2)+(lvl.n*2*2); http://www.cyberforum.ru/cpp-beginners/thread1244680.html
C++ Каким образом работает swap в приведенном коде? http://www.cyberforum.ru/cpp-beginners/thread1244636.html
Каким образом работает swap в коде ниже? #include<list> #include<memory> #include<utility> struct test { std::list<std::unique_ptr<int> >a,b; }; int main()
C++ Функция для проверки почтового адреса
Мне нужно написать функцию, которая проверяет правильно ли введен почтовый адрес. Условий корректности много. Например, символ "точка" не должен располагаться сразу после символа "@". Я это условие...
C++ Пояснение к аргументам при вызове функции, и запрет конструктора по умолчанию
Вобщем касательно конструктора такой код: class box { public: box(int t):z(t){y=6;} void Set(int u, float j){cout<<u<<j;}; int z; int y;
C++ Пример двоичного дерева Здравствуйте! Возникла мысль попробовать реализовать двоичное дерево в c++ для этого решил сначала рассмотреть какие-нибудь примеры в сети... В общем возникли вопросы по синтаксису. template<class... http://www.cyberforum.ru/cpp-beginners/thread1244606.html
C++ Найти максимум и минимум в двумерном массиве http://www.cyberforum.ru/cpp-beginners/thread1244605.html
где ошибка Спрашивает, как заполнить двум массив, ищет max и min #include <iostream> #include <ctime> using namespace std;
C++ Сравнение двумерных матриц - разобрать код Разобрать суть кода, что в нем описанно, функций int** create_matrix(int n, int m,int tip) { int**variable= NULL; //переменная variable = (int**)malloc(sizeof(int*)*n); for(int... http://www.cyberforum.ru/cpp-beginners/thread1244597.html
tehnar5
31 / 31 / 19
Регистрация: 03.05.2011
Сообщений: 84
20.08.2014, 11:38 0

Выводятся две строки подряд при выводе лишь одной

20.08.2014, 11:38. Просмотров 554. Ответов 7
Метки (Все метки)

Ответ

Представим память в виде массива. По всей видимости, происходит нечто следующее:
Сначала вы берете и помещаете в память две пустые строки. Это значит, что у вас есть два указателя - str1 и str2, которым нужно выделить только одну ячейку памяти(чтобы записать в нее 0 - символ конца строки). Эти блоки памяти могут быть расположены как угодно и где угодно, например, они могут быть расположены близко друг к другу. В Вашем случае они расположены как-то так:
....x...y...., где х - начало первой строки, а у - начало второй строки. Соответственно, после считывания первой строки память выглядит так: .....abcd0...., первая строка начинается с а, вторая с 0. Вывод будет работать корректно, так как он выводит по одному символу, пока не встретится 0. После считывания второй строки память выглядит так: ..abcdklmn0.., вторая строка так же выведется корректно, но теперь, технически, первая строка стала длиннее, так как ближайший справа 0 стал дальше.

Иными словами, если Вы не выделили память/выделили ее мало, то программа вполне может залезть в чужую память. В лучшем случае, это будет память другого процесса и тогда она вылетит с ошибкой, в худшем - это будет какая-то другая переменная. Как мне кажется, второй вариант тоже не правилен, так как надо указывать размер выделяемой памяти, но, по всей видимости, Вам повезло и память выделилась по-другому, подальше друг от друга. Самый правильный способ это new char[maxlength + 1], +1 нужен для того, чтобы хранить 0 - символ конца строки

Вернуться к обсуждению:
Выводятся две строки подряд при выводе лишь одной
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.08.2014, 11:38
Готовые ответы и решения:

При выводе массива выводятся лишние непонятные символы
Имеется массив vord из 10 символов. Ввожу несколько символов(например 4 символа) в этот массив....

При выводе динамической матрицы выводятся непонятные цифры
данная программа считает суммы строк двумерного массива. но при выводе массива, который хранит...

Построчное чтение файла в консоли - выводятся две строки подряд
Есть текстовый файл, в нём куча строчек. Читаю файл: foreach (string lr in File.ReadLines(path,...

При выводе строки в терминал выводятся неизвестные символы
Всем привет, при выводе строки в терминал выводит на следующую строку какие-то символы(последняя...

при выводе записей из базы они выводятся в одну строчку, а надо чтобы каждая запись начиналась с новой строки.
Я только начинаю изучать ASP подскажите где ошибка, при выводе записей из базы они выводятся в одну...

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