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

Строки - засорение памяти - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Разработать ППП «Определение собственных значений и собственных векторов матрицы» http://www.cyberforum.ru/cpp-beginners/thread589197.html
Разработать ППП «Определение собственных значений и собственных векторов матрицы» следующими способами: 1) методом Крылова; 2) методом Леверье-Фадеева; 3) методом Данилевского; 4) методом итераций.
C++ Структуру с именем ZNAK Необходимо сделать следующее: Разработать структуру с именем ZNAK, содержащую поля: • Фамилия, имя; • Знак Зодиака; • Дата рождения (массив их трёх чисел для хранения даты, месяца и го- да). Написать программу, выполняющую следующие действия: • Ввод с консоли данных в массив структур ZNAK; • Вывод на консоль информации о людях, родившихся в месяц, значе- http://www.cyberforum.ru/cpp-beginners/thread589183.html
дан файл с текстом C++
• в качестве библиотеки ввода-вывода необходимо использовать потоковую библиотеку ввода-вывода «iostream»; пространство имен std
В Одномерном массиве состоящем из n элементов C++
В одномерном массиве ,состоящем из n элементов , вычислить сумму модулей его элементов после первого нулевого элемента.
C++ Вывести таблицу степеней двойки http://www.cyberforum.ru/cpp-beginners/thread589158.html
Здравствуйте, нужна помощь в составлении программы, которая выводит таблицу степеней двойки (от нулевой до десятой). Ниже представлен рекомендуемый вид экрана во время работы программы: 0 1 1 2 2 4 3 8 4 16 5 32 6 64 7 128
C++ Разработать структуру с именем POINT Разработать структуру с именем POINT, содержащую поля: 1) Горизонтальная координата точки на плоскости. 2) Вертикальная координата точки на плоскости. Написать программу, выполняющую следующие действия: 1) Ввод с консоли координат вершин ломанной линии в массив структуры POINT. 2)Вычислить и вывести на консоль длину ломаной линии. подробнее

Показать сообщение отдельно
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
28.05.2012, 17:37     Строки - засорение памяти
Цитата Сообщение от 33parrots Посмотреть сообщение
b)
C++
1
2
3
4
5
char* FunctionB()
{
    char str1[10]="abcd";
    return str1;
}
Здесь предупреждение действительно сообщает о возврате указателя на локальную переменную (массив), которая после выхода из функции будет разрушена.
Для такого типа функций есть 3 варианта.
1. Возвращать указатель на строковой литерал (как в коде "a", но с добавлением const). Строковой литерал существует на всём протяжении работы программы, но менять его запрещается.
2. Выделять память под строку динамически и копировать уже в этот массив. Тогда на вызывающую функцию возлагается обязанность освободить полученный массив после использования.
3. Создавать массив в вызывающей функции (статически или динамически) и передавать указатель на него в функцию как параметр. Внутри функции опять-таки потребуется копирование.

Добавлено через 1 минуту
Цитата Сообщение от 33parrots Посмотреть сообщение
Но, что самое странное, всё работает! Как?
Случайно
Если после возврата из функции, но перед выводом результата вызвать какую-нибудь функцию с большим количеством параметров, то наверняка данные испортятся.
 
Текущее время: 02:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru