Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2011, 07:19   #1
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
Восклицание Кодинг в Linux, Qt Creator.

Чем дальше изучаю Ubuntu, тем больше поражаюсь... Вот код, который будет нормально работать в Windows.
Код:
#include <iostream>

int main()
{
    int n = 0;
    std::cin >> n;

    int* p = new int[n];

    for ( register int i = 0 ; i < n ; i++ )
    {
        std::cin >> p[i];
    }

    for ( register int i = 0 ; i < n ; i++ )
    {
        std::cout << (*p++) << " ";
    }
    delete[] p;
    return 0;
}
Однако он не работает в Linux, выдаёт "Ошибка сегментирования". Однако, ежели убрать команду
Код:
delete[] p;
То всё будет прекрасно работать! Почему?!


Update.

Тьфу ты, указатели поганые.
Код:
std::cout << (*p++) << " "; // Каждый раз изменяю на что указывает указатель
//....
delete[] p; // пытаюсь освободить уже не свою память
Надо так
Код:
#include <iostream>

int main()
{
    int n = 0;
    std::cin >> n;

    int* p = new int[n];

    for ( register int i = 0 ; i < n ; i++ )
    {
        std::cin >> p[i];
    }

    for ( register int i = 0 ; i < n ; i++ )
    {
        std::cout << p[i] << " ";
    }
    delete[] p;
    return 0;
}

Последний раз редактировалось _-Re@l-_; 17.12.2011 в 07:33.
_-Re@l-_ вне форума Ответить с цитированием
Старый 17.12.2011, 16:48   #2
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,120
По умолчанию

_-Re@l-_

Вот код, который будет нормально работать в Windows.
...
Однако он не работает в Linux, выдаёт "Ошибка сегментирования"

Очевидно, в Windows имеется какая-то встроенная защита от быдло-программистов, которые, которые освобождают значение указателя по совершенно другому адресу, нежели тот, который был выделен.

Ну а чОткие программисты в linux настолько суровы, что им никакая защита не нужна.
Rififi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужен кодинг к програме(делпфи) xzcb Фриланс 6 06.03.2010 03:11
Кодинг под 3G модемы [Smarik] Свободное общение 7 26.07.2009 15:42
не создается таблица в Interbase, вот кодинг... Алёна БД в Delphi 3 19.02.2008 18:21
Микросайзовый кодинг в делфи execom Софт 16 10.10.2007 09:26