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

Разыменование нулевого указателя - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ оператор sizeof http://www.cyberforum.ru/cpp-beginners/thread285483.html
Добрый вечер! Был сделан тест. Есть класс class A { int a; char b; double c; }; В программе:
C++ Выяснение счастливого года... Всем Доброго времени суток... Народ, помогите пожалуйста написать программу в Borland c++ 3.1 Вот сама задача... Введите день и месяц своего рождения. Выясните, какой ближайший год будет для вас счастливым. Год называется счастливым, если остаток от деления суммы его цифр на 10 совпадает с аналогичным остатком сумм цифр месяца или дня рождения. Я на сколько понял нужно разложить... http://www.cyberforum.ru/cpp-beginners/thread285479.html
C++ Функции для запроса и чтения ФИО, почтового адреса и даты
Постройте функции для запроса и чтения ФИО, почтового адреса и даты, и проверьте корректность ввода, с использованием контейнерных классов и алгоритмов библиотеки. Именуйте темы осмысленно. Название темы должно максимально полно отражать её содержимое.
Матрицы и векторы C++
есть готовый код. нужно исправить код так, чтобы вводились с клавиатуры: размер матрицы, сама матрица и свободные элементы. Понимаю, что вопрос туповатый, но просто не успеваю сделать. Спасибо заранее #include <iostream.h> #include <math.h> const int n = 4; double Delta(double *X, double *x, double a); void PrintVector(double *X); int main() { double A = { { 0.32, -0.05, ...
C++ Ошибка "ссылка на неразрешенный внешний символ" http://www.cyberforum.ru/cpp-beginners/thread285460.html
#ifndef class_H #define class_H #include "stdafx.h" #include "iostream" #include "algorithm" #include "iterator" using namespace std;
C++ Получение каталога выполнения текущей программы необходимо из в ходе выполнения самой программы получить папку, в которой она выполняется знает кто-нить? есть всякие GetCurrentDir, но без понятия как эти DWORD переконвертить в string подробнее

Показать сообщение отдельно
ForEveR
В астрале
Эксперт С++
7969 / 4731 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3

Разыменование нулевого указателя - C++

28.04.2011, 23:54. Просмотров 2622. Ответов 3
Метки (Все метки)

Как вообще по стандарту ведет себя программа после разыменования нулевого указателя? Указано-ли это явно?

Просто сегодня на работе обнаружил код вроде

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <iostream>
 
#define SOME_DEFINE
 
class NullClass
{
};
 
class SomeClass
{
public:
    SomeClass():t(0)
    {
    }
private:
    int t;
};
 
#ifdef SOME_DEFINE
struct some_struct
{
    typedef NullClass context_type;
    static void some_foo(int t, context_type tp)
    {
        function(t);
    }
    static void function(int t)
    {
    }
};
#else
struct some_struct
{
    typedef SomeClass context_type;
    static void some_foo(int t, context_type tp)
    {
        function(t, tp);
    }
    static void function(int t, context_type tp)
    {
    }
};
#endif
 
class MainClass
{
public:
    typedef some_struct::context_type context_type;
    MainClass(int some_param_, bool some_flg_):
        context(0), some_param(some_param_), some_flg(some_flg_)
        {
        }
    MainClass(context_type context_, int some_param_, bool some_flg_):
        context(&context_), some_param(some_param_), some_flg(some_flg_)
        {
        }
    void some_function()
    {
        some_struct::some_foo(some_param, *context);
    }
private:
    context_type* context;
    int some_param;
    bool some_flg;
};
 
int main()
{
    MainClass mc(0, false);
    mc.some_function();
}
Но там все сложнее и без этих #ifdef и т.п. не обойтись, ибо работа идет с asio. И сервер может работать либо через SSL либо без шифрования... Код кстати рабочий на работе.

Но не суть. Скомпилив на MSVS получил ошибку, что логично. Скомпилировав на gcc получил корректность! result

Как такое может быть вообще?
ЗЫ как следствие такой код ведет себя на gcc тоже прекрасно, а на msvs бросает ошибку
simple code.
Растолкуйте кто знает?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru