C программа не работает

Код нормально запускается и работает с помощью онлайн IDE (repl.it, там код на СИ запускается из под OS Linux), но на моём компьютере (Windows 10) происходит что-то непонятное. При компиляции ( gcc main.c -o main ) никаких ошибок не возникает, но программа в результате ничего не делает. Открывается пустая консоль на 1-2 секунды и исчезает. Если же при инициализации указателя на массив присвоить ему результат выполнения функции malloc , то всё будет работать нормально.

#include #include int main(void)

Действительно ли это связано с операционными системами? Где можно почитать про поведение программы в этом случае?

Отслеживать
задан 13 июл 2019 в 17:40
Don2Quixote Don2Quixote
1,705 3 3 золотых знака 12 12 серебряных знаков 25 25 бронзовых знаков

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Всё правильно. Неинициализированная переменная имеет произвольное значение. Если эта переменная — указатель, то он указывает в случайную область памяти. Поптыка записать в случайную область памяти числа 2, закономерно приводит к ошибке сегментации, и ваша программа падает.

Почему не работают USB порты? Причины и решения!

Отслеживать
ответ дан 13 июл 2019 в 17:48
Sergey Gornostaev Sergey Gornostaev
66.2k 6 6 золотых знаков 51 51 серебряный знак 112 112 бронзовых знаков
Но тут работает! Почему?

13 июл 2019 в 18:02

Скажите, когда вы переходите дорогу в неположенном месте и остаетесь живы — вас это удивляет или нет? 🙂 Вы нарушаете правила, но это же не означает, что вас тут же надо убивать. Так бывает и с программами 🙂

13 июл 2019 в 18:04

Источник: ru.stackoverflow.com

.NET Framework. Собранная программа не запускается на другом компьютере

В Visual Studio Community 2017 создал Приложение WPF (.NET Framework) на языке C#. Сделал Release сборку и отправил полученный исполняемый файл другу. Но у него программа отказалась запускаться, выдала сообщение » This application could not be started «. Версия студии на тот момент у меня была 15.5.6, а приложение я писал используя .NET Framework 4.6.1. У друга операционная система Windows 10 (редакция Home). На следующий день студия обновилась до версии 15.5.7 и я снова собрал данное приложение, а заодно ещё два приложения чистых WPF проектов. В итоге я получил три программы:

  1. Empty_3.5.exe — чистый WPF проект на C# используя .NET Framework 3.5
  2. Empty_4.6.1.exe — чистый WPF проект на C# используя .NET Framework 4.6.1
  3. Test.exe — прошлое приложение на C# использующее .NET Framework 4.6.1
Читайте также:
Как воспроизводить звуки в discord программа

Попробовал запустить программы на другом компьютере с установленной Windows 10. Все программы успешно запустились. Вечером прислал их другу, а у него они не заработали. Вот что выскакивает когда запускаешь Empty_3.5.exe:

Как очистить память в SmartTV? Что делать если завис SmartTV? Не работает приложение в SmartTV?

Изображение

Я не понимаю что это за кнопки, но одна закрывает окно, а другая должна дать больше информации. Однако при нажатии на кнопку с информации, там появляется ещё какое-то окно с ошибкой и текстом что-то про Google Chrome (видимо не может открыть страничку с описанием ошибок через браузер, почему-то).

Вообще на его компьютере установлены .NET Framework’и (если верить включённым компонентам Windows). Стоят галочки на против пунктов .NET Framework 3.5 (включает .NET 2.0 и .NET 3.0) и .NET Framework 4.7 с дополнительными службами . Почему тогда приложения не работают?

  • Walter Sullivan
  • Постоялец

#1
11:11, 22 фев 2018

Проверьте битность приложения. Ошибка означает что ОС не может найти .net подходящей битности.

Источник: gamedev.ru

Устранение неполадок при запуске приложения

В этой статье описаны некоторые распространенные причины и возможные решения для сбоев запуска приложения. Это относится к приложениям, зависящим от платформы, которые используют установку .NET на вашем компьютере.

Если вы уже знаете, какая версия .NET вам нужна, вы можете скачать ее из загрузок .NET.

Установка .NET не найдена

Если установка .NET не найдена, приложение не запускается с сообщением примерно следующего:

You must install .NET to run this application. App: C:reposmyappmyapp.exe Architecture: x64 Host version: 7.0.0 .NET location: Not found
You must install .NET to run this application. App: /home/user/repos/myapp/myapp Architecture: x64 Host version: 7.0.0 .NET location: Not found

Читайте также:
Производственной программы предприятия схема

Это может быть вызвано смешанным пакетом.

Глобальные установки регистрируются в следующем расположении: /etc/dotnet/install_location . Дополнительные сведения см. в разделе Расположения установки.

You must install .NET to run this application. App: /home/user/repos/myapp/myapp Architecture: x64 Host version: 7.0.0 .NET location: Not found

Глобальные установки регистрируются в следующем расположении: /etc/dotnet/install_location . Дополнительные сведения см. в разделе Расположения установки.

Сообщение об ошибке содержит ссылку для скачивания .NET. Перейдите по этой ссылке, чтобы перейти на соответствующую страницу скачивания. Вы также можете выбрать версию .NET (указанную параметром Host version ) из загрузок .NET.

На странице скачивания необходимой версии .NET найдите скачиваемый файл среды выполнения .NET , соответствующий архитектуре, указанной в сообщении об ошибке. Затем его можно установить, скачав и запустив установщик.

Платформа .NET доступна через различные диспетчеры пакетов Linux. Дополнительные сведения см. в статье Установка .NET в Linux. (Предварительные версии .NET обычно недоступны в диспетчерах пакетов.)

Необходимо установить пакет среды выполнения .NET для соответствующей версии, например dotnet-runtime6 .

Кроме того, на странице скачивания для требуемой версии .NET можно скачать двоичные файлы для указанной архитектуры.

Требуемая платформа не найдена

Если требуемая платформа или совместимая версия не найдена, приложение не запускается с сообщением, аналогичным следующему:

You must install or update .NET to run this application. App: C:reposmyappmyapp.exe Architecture: x64 Framework: ‘Microsoft.NETCore.App’, version ‘5.0.15’ (x64) .NET location: C:Program Filesdotnet The following frameworks were found: 6.0.2 at [c:Program FilesdotnetsharedMicrosoft.NETCore.App]
You must install or update .NET to run this application. App: /home/user/repos/myapp/myapp Architecture: x64 Framework: ‘Microsoft.NETCore.App’, version ‘5.0.15’ (x64) .NET location: /usr/share/dotnet/ The following frameworks were found: 6.0.2 at [/usr/share/dotnet/shared/Microsoft.NETCore.App]

You must install or update .NET to run this application. App: /home/user/repos/myapp/myapp Architecture: x64 Framework: ‘Microsoft.NETCore.App’, version ‘5.0.15’ (x64) .NET location: /usr/local/share/dotnet/ The following frameworks were found: 6.0.2 at [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]

Читайте также:
Какая программа открывает zip на Андроид

Ошибка указывает имя, версию и архитектуру отсутствующих платформ, а также расположение, в котором она должна быть установлена. Чтобы запустить приложение, можно установить совместимую среду выполнения в указанном расположении .NET. Если приложение предназначено для более ранней версии, чем установленная, и вы хотите запустить ее в более поздней версии, можно также настроить поведение наката для приложения.

Установка совместимой среды выполнения

Сообщение об ошибке содержит ссылку для скачивания отсутствующих платформ. Перейдите по этой ссылке, чтобы перейти на соответствующую страницу скачивания.

Кроме того, можно скачать среду выполнения со страницы загрузок .NET . Существует несколько скачиваний среды выполнения .NET.

В следующей таблице показаны платформы, содержащиеся в каждой среде выполнения.

Скачивание среды выполнения Включенные платформы
среда выполнения ASP.NET Core Microsoft.NETCore.App
Microsoft.AspNetCore.App
Среда выполнения классических приложений .NET Microsoft.NETCore.App
Microsoft.WindowsDesktop.App
Среда выполнения .NET Microsoft.NETCore.App
Скачивание среды выполнения Включенные платформы
среда выполнения ASP.NET Core Microsoft.NETCore.App
Microsoft.AspNetCore.App
Среда выполнения .NET Microsoft.NETCore.App

Выберите скачиваемую среду выполнения, содержащую недостающую платформу, и установите ее.

На странице загрузки для требуемой версии .NET найдите скачиваемую среду выполнения, соответствующую архитектуре, указанной в сообщении об ошибке. Скорее всего, вы хотите скачать установщик.

Платформа .NET доступна через различные диспетчеры пакетов Linux. Дополнительные сведения см. в статье Установка .NET в Linux . (Предварительные версии .NET обычно недоступны в диспетчерах пакетов.)

Необходимо установить пакет среды выполнения .NET для соответствующей версии, например dotnet-runtime6 или dotnet-aspnet6 .

Кроме того, на странице скачивания для требуемой версии .NET можно скачать двоичные файлы для указанной архитектуры.

В большинстве случаев, когда приложение, которое не удалось запустить, использует такую установку, расположение .NET в сообщении об ошибке указывает на следующее:

Источник: learn.microsoft.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru