Форум программистов, компьютерный форум, киберфорум C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Модульные Тесты https://www.cyberforum.ru/ cpp/ thread2923811.html
Такая проблема у меня . Использую Google test в vs 2019 . Мне нужно чтобы тест из файла test.cpp выполнял тест над нужным мне куском кода из файла matrix.cpp , но я не знаю как на него указать . Как это сделать ? Текст test.cpp #include "pch.h" #include "gtest/matrix/matrix.cpp" TEST(matrix_addition_throw_error, incompatible_size) { //Arrange
C++ Как скомпилировать программу?
есть исходник игры на C++ https://github.com/Hopson97/HopsonCraft я хочу его скомпилировать в exe через какие программы и как это можно сделать
C++ Не могу найти ошибку.Неверно расшифровывает сообщение Неверно расшифровывает сообщение.Не могу понять ,что не так.Помогите пожалуйста. Вот так выводит. Введите первое число: 3 Введите второе число: 7 Введите сообщение! qwerty Значения n , t: 21 12 https://www.cyberforum.ru/ cpp/ thread2923446.html C++ Сортировку Холла шаблонному виду Как я понял нужно использовать вот это, но я не уверен: template<typename T> #include <iostream> //ввод-вывод #include <cstdlib> //rand srand #include <ctime> //time #include <locale> //setlocale https://www.cyberforum.ru/ cpp/ thread2923282.html
C++ Проблема, пишет ошибка которую я не могу исправить
По заданию нужно : Реализовать рекурсивный вариант функции "быстрой" сортировки в виде шаблонной функции. Проверить работу. Реализовал быструю сортировку, но когда начал приводить к общему виду Ошибки: Ошибка LNK2019 ссылка на неразрешенный внешний символ _main в функции "int __cdecl invoke_main(void)"...
C++ Почему крашится программа после выполнения? https://www.cyberforum.ru/ cpp/ thread2922843.html
После выполнения и вывода результата консоль с программой прекращает свою работу через примерно 4-5 секунд. Предполагаю что это связано с динамической памятью. Кому не сложно прошу подсказать как это исправить ) Код: #include <stdio.h> #include <stdlib.h> int strConvent(char *s, char ** parts) { int r = 0; while (*s) {
C++ Массив Нужна помощь, вот задания: C одномерный мaccивом длинoй 15 eлемeнтов, найти среднее значения с чётными номeрами, сумму положительных eлементoB, мaксимaльный eлемеnt Заранее спасибо, прошу.. https://www.cyberforum.ru/ cpp/ thread2922448.html Как работает тернарная операция C++
Объясните пожалуйста как работает эти 2 строки дословно,программа поиска подстроки в строке(БМ) s-номер символа в строке, m-длинна подстроки, j номер символа подстроки s += (s + m < n) ? m - badchar] : 1; } else s += max(1, j - badchar]); }
C++ Тернарная операция Не могу понять зачем в программе нужно а или б # include <limits.h> # include <string.h> # include <stdio.h> # define NO_OF_CHARS 256 int max(int a, int b) { return (a > b) ? a : b; //если а больше б, то выведет а, иначе б } https://www.cyberforum.ru/ cpp/ thread2922370.html C++ Что значит NO_OF_CHARS Что значит NO_OF_CHARS и как оно работает int badchar Сам код, если нужен # include <limits.h> https://www.cyberforum.ru/ cpp/ thread2922292.html
Как работает calloc C++
Почему у calloc тип float? И как работает именно сама строка, в плане в программе внутри как происходит выделение памяти f = (int*) calloc(sizeof(float), m); Сам код #include <iostream> #include <cstring> #include <cstdlib> using namespace std;
C++ Как можно отредактировать код, чтобы программа не совпадала? #include <stdio.h> #include <unistd.h> #include <pthread.h> struct th_args { long thread_id; char flag; }; https://www.cyberforum.ru/ cpp/ thread2922134.html
Вездепух
Эксперт CЭксперт С++
12783 / 6662 / 1793
Регистрация: 18.10.2014
Сообщений: 16,849
19.12.2021, 22:08 0

Возврат из функции и затирание стека - C++ - Ответ 15945081

19.12.2021, 22:08. Показов 963. Ответов 1
Метки (Все метки)

Лучший ответ Сообщение было отмечено MikhailITMM как решение

Решение

Цитата Сообщение от MikhailITMM Посмотреть сообщение
Кто-нибудь может объяснить, почему так происходит на самом деле?
А код привести текстом - не судьба? Что за манера - публиковать скриншоты кода?

---

Первый вариант кода - всегда и везде неопределенное поведение. Никакого продления времени жизни тут не происходит. Некоторые компиляторы (GCC) специально вернут из первой функции "нулевую ссылку", чтобы заставить ваш код упасть с segmentation fault.

---

Второй вариант кода: зависит от реализации.

Параметры функции создаются в контексте вызывающего кода. То есть параметры фактичеки НЕ являются локальными переменными своей функции. Их идентификатор виден только локально, но сами они создаются, живут и уничтожаются снаружи функции, в вызывающем коде.

Момент уничтожения параметра функции определяется реализацией: допускается два варианта

1. Уничтожение параметров сразу после возврата из функции
2. Уничтожение параметров в конце полного выражения, содержащего вызов функции

Причем похоже (стандарт это не уточняет и не ограничивает), что решение может приниматься индивидуально для каждого конкретного типа.

Компилятор MSVC придерживется первой стратегии для всех типов. То есть ваша ссылка внутри func_2 ссылается на уже уничтоженный объект. Поведение не определено.

Компиляторы GCC и Clang в общем придерживаются второй стратегии (как диктуется их ABI), то есть теоретически второй вариант кода в них должен работать корректно. Однако GCC даже в этом случае опять лезет со своей манерой возвращать "нулевую ссылку" (баг компилятора?), а Clang почему-то все таки затирает значение. Возможно, что уничтожение именно скалярных объектов делается по первому варианту.

Если же вы замените int на std::string, то второй пример будет прекрасно работать в Clang.

Вернуться к обсуждению:
Возврат из функции и затирание стека C++
1
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.12.2021, 22:08
Готовые ответы и решения:

Создать стек для символов. Максимальный размер стека вводится с экрана. Создать функции для ввода и вывода элементов стека. Ввести эталонный символ.
Создать стек для символов. Максимальный размер стека вводится с экрана. Создать функции для ввода...

Возврат 2 значений из функции с одним вызовом этой же функции
Вообщем где то в какой то игре была хукнута одна функция int function(int arg1,int arg2,int...

Дан указатель Р1 на вершину непустого стека. Создать два новых стека, переместив в первый из них все элементы исходного стека с четными значениями, а
Помогите срочно составить задачу: Дан указатель Р1 на вершину непустого стека. Создать два новых...

Дан указатель Top1 на вершину непустого стека. Создать два новых стека, переместив в первый из них все элементы исходного стека с четными значениями,
Здравствуйте, Уважаемые пользователи!!! Помогите пожалуйста решить данную задачу : Дан указатель...

Возврат функции
Здравствуйте. Делаю вызов функции var Status1 = TreckingNovaPoshta (IntDocNumber); Код...

1
19.12.2021, 22:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.12.2021, 22:08
Помогаю со студенческими работами здесь

Возврат функции
Всем доброго времени суток! Пишу трейд-бота для стима( принимает вещи и отдает их в автоматическом...

Возврат функции
Не могу сообразить как в этом коде Страуструпа указать возврат функции return, чтобы выполнились...

возврат функции
Здравствуйте. Мне нужно, чтобы при выборе функции с помощью radiobutton, она была именно как...

Возврат функции
; vector&amp; vector::operator=(const vector&amp; a) // делает этот вектор копией вектора a { double*...

Возврат ссылки из функции
Изучаю С++, знаю С. Вот такой простенький вопросик есть. В чем вообще разница: class Str {...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru