Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Null Pointer Assignment 
:(
    Опции темы
apook
Дата 26.9.2007, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 794
Регистрация: 12.7.2006

Репутация: 9
Всего: 23



Научите отлавливать Null Pointer Assignment, если дебаггер то какой, где скачать и прям на пальцах ...


--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
JackYF
Дата 26.9.2007, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(apook @  26.9.2007,  10:56 Найти цитируемый пост)
Научите отлавливать Null Pointer Assignment

такая ошибка приводит к краху системы сразу, это заметно  smile 

запуск под любым вменяемым дебагером - компиляторы Borland C++ Builder, MS Visual Studio, MinGW(gdb), ну и gdb под линух к таковым относятся - позволяет в момент краха посмотреть стек вызовов функций и даже инструкцию, на которой программа убилась.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
apook
Дата 26.9.2007, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 794
Регистрация: 12.7.2006

Репутация: 9
Всего: 23



Цитата(JackYF @  26.9.2007,  14:53 Найти цитируемый пост)
такая ошибка приводит к краху системы сразу, это заметно
 Что-за шутки  smile Мне надо всего-лишь узнать что это за пустой указатель, а это понятие какое-то расплывчатое в него входит не удаленный динамический массив, попытка удалить не существуюющий массив, вобщем некорректное освобождение памяти, при этом программа дорабатывает до конца, сробатывает правильно и при выходе выводится это сообщение!
но только на старом tcc



--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
JackYF
Дата 26.9.2007, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(apook @  26.9.2007,  15:25 Найти цитируемый пост)
Мне надо всего-лишь узнать что это за пустой указатель

Null pointer - это указатель, значение которого нулл, то есть на большинстве системах - 0.
При попытке обращения по нулевому указателю система падает.

Цитата(apook @  26.9.2007,  15:25 Найти цитируемый пост)
при этом программа дорабатывает до конца

если ты перезаписал свою же память в месте, где хранится служебная инфа, то на это надеятся нельзя

Цитата(apook @  26.9.2007,  15:25 Найти цитируемый пост)
но только на старом tcc

если у него отладчик вменяемый - не проблема.

А вообще, бросали бы вы мучать эти трупы...



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
apook
Дата 26.9.2007, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 794
Регистрация: 12.7.2006

Репутация: 9
Всего: 23



Цитата(JackYF @  26.9.2007,  16:31 Найти цитируемый пост)
А вообще, бросали бы вы мучать эти трупы...
 Просто надо было сделать приложение под ДОС, да и опять же хочется разобраться, ведь сие означает что эта ошибка возникает и при компилировании более свежим компиляторм, тока он сам ее отлавливает скорее всего что-то типа зборщика мусора



--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
JackYF
Дата 26.9.2007, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(apook @  26.9.2007,  17:04 Найти цитируемый пост)
что-то типа зборщика мусора

сборщика мусора в компилируемых языках нет, для него нужна среда исполнения.

Цитата(apook @  26.9.2007,  17:04 Найти цитируемый пост)
тока он сам ее отлавливает

никто ничего сам не отлавливает. Отладчик тебе помогает её отловить.



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
apook
Дата 27.9.2007, 07:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 794
Регистрация: 12.7.2006

Репутация: 9
Всего: 23



Цитата(JackYF @  26.9.2007,  18:20 Найти цитируемый пост)
для него нужна среда исполнения.
Исполняемый файл и ОС среда исполнения кода smile, раз сборщик мусора можно организовать самому значит это может делать компилятор, то бишь проследить за обьектами хотяб мало мальски и явные несущественные косяки (типа указатель потерявший на что он указывал) убрать!

Да просто время жизни обьектов по разному расссматривается старым и более новым компилятором  вот и причина.... 


Это сообщение отредактировал(а) apook - 27.9.2007, 07:41


--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
Daevaorn
Дата 27.9.2007, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(apook @  27.9.2007,  08:29 Найти цитируемый пост)
Да просто время жизни обьектов по разному расссматривается старым и более новым компилятором  вот и причина.... 

просвети, какими и как?
PM MAIL WWW   Вверх
Earnest
Дата 27.9.2007, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Цитата(apook @  27.9.2007,  08:29 Найти цитируемый пост)
раз сборщик мусора можно организовать самому значит это может делать компилятор,

В корне неверное утверждение. За сборку мусора нужно платить, а компилятор без понятия, где ты готов платить, а где нет. А если готов платить всегда, то тебе в наших (сионистов) рядах не место. smile  smile  smile (мы очень жадные)

Кроме того, я вижу, что ты путаешь null-pointer и указатель на уже удаленный объект... это две такие большие разницы... С первым тебе проблем нет - падаем, как уже было сказано, на первом запуске. Со вторым... самый лучший способ - не делать таких ошибок...


--------------------
...
PM   Вверх
apook
Дата 27.9.2007, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 794
Регистрация: 12.7.2006

Репутация: 9
Всего: 23



Код

#include<conio.h>
#include<stdio.h>
#include<string.h>

#define DATSZ 10
#define _OODSZ 5

struct DAT
{
    char **g_ood, **p_ood, **f_ood;
    int *sensor;
    };


int main()
{
char word[ ]="abcdefgij";
DAT *acc;
acc=new DAT[ DATSZ ];
for( int i=0; i<DATSZ; i++ )
{
    acc[ i ].g_ood=new char*[ _OODSZ ];
    acc[ i ].p_ood=new char*[ _OODSZ ];
    acc[ i ].f_ood=new char*[ _OODSZ ];
    }

for( int j=0; j<i; j++ )
{
    acc[ i ].sensor=new int[ i-j ];
    }

for( i=0; i<DATSZ; i++ )
{
    for( j=0; j<_OODSZ; j++ )
    {
        acc[ i ].g_ood[ j ]=new char[ 10 ];
        acc[ i ].p_ood[ j ]=new char[ 10 ];
        }
    }

for( i=0, j=0; i<_OODSZ; i++ )
{
    for( ; j<DATSZ; j++ )
    {
        strcpy( acc[ i ].g_ood[ j ], (char *)word[ i ] );
        strcpy( acc[ i ].p_ood[ j ], (char *)word[ i ] );
        }
    }


for( i=0, j=0; i<DATSZ; i++ )
{
    for( ; j<_OODSZ; j++ )
    {
            delete [] acc[ i ].g_ood[ j ];
            delete [] acc[ i ].p_ood[ j ];
            //delete [] acc[ i ].f_ood[ j ]; // эта неправильная строчка уберет Null Pointer Assignment
        }
    delete [] acc[ i ].g_ood;
    delete [] acc[ i ].p_ood;

    //delete [] acc[ i ].sensor; //  или эта правильная но не имеющая отношения к причине
    }

return 0;
}

Пример конечно не очень, придумать можно было и поинтересней, но все-же задача найти и обьяснить причину Null Pointer Assignment? Пример без ошибок и предупреждений компелируется на Borland Turbo C++ 3.x Готовый файл прицепляю на всякий случай!  Далее задача откомпелировать это на более свежем компиляторе на Borland C++ Builder( но я думаю и на других) и Daevaorn  узнает разницу  времени жизни переменных на старых и новых компиляторах(хотя в данном случае причина не в этом)

Это сообщение отредактировал(а) apook - 27.9.2007, 12:36

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  MAIN.zip 2,83 Kb


--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
Daevaorn
Дата 27.9.2007, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



apook, этот код не компилируется по причине
Цитата

main.cpp:1:18: error: conio.h: Нет такого файла или каталога
main.cpp:55:2: warning: no newline at end of file
main.cpp: In function ‘int main()’:
main.cpp:22: error: name lookup of ‘i’ changed for new ISO ‘for’ scoping
main.cpp:16: error:   using obsolete binding at ‘i’
main.cpp:28: error: name lookup of ‘j’ changed for new ISO ‘for’ scoping
main.cpp:22: error:   using obsolete binding at ‘j’

PM MAIL WWW   Вверх
apook
Дата 27.9.2007, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 794
Регистрация: 12.7.2006

Репутация: 9
Всего: 23



Цитата(Daevaorn @  27.9.2007,  12:38 Найти цитируемый пост)
name lookup of ‘i’ changed for new ISO ‘for’ scoping
 Что здесь написано грамотей



--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
Daevaorn
Дата 27.9.2007, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(apook @  27.9.2007,  13:31 Найти цитируемый пост)
 узнает разницу  времени жизни переменных на старых и новых компиляторах

время жизни регламентируется стандартом.
Потом, в таких случая приводят минимально возможный код демострирующий ситуацию. В твоем недокоде разбираться желания нет, да он и не "компилябельный" по причине не соответсвия стандарту. 
PM MAIL WWW   Вверх
apook
Дата 27.9.2007, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 794
Регистрация: 12.7.2006

Репутация: 9
Всего: 23



Цитата(apook @  26.9.2007,  15:25 Найти цитируемый пост)
но только на старом tcc


Цитата(apook @  26.9.2007,  17:04 Найти цитируемый пост)
Просто надо было сделать приложение под ДОС,


Цитата(apook @  27.9.2007,  07:29 Найти цитируемый пост)
 время жизни обьектов по разному расссматривается старым и более новым компилятором


Цитата(Daevaorn @  27.9.2007,  11:01 Найти цитируемый пост)
просвети, какими и как?


Цитата(Daevaorn @  27.9.2007,  12:50 Найти цитируемый пост)
разбираться желания нет


Цитата(Daevaorn @  27.9.2007,  12:50 Найти цитируемый пост)
по причине не соответсвия стандарту.
 Не соответствия новому стандарту

По вопросу сказать нечего, зачем поститься?




--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
Daevaorn
Дата 27.9.2007, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(apook @  27.9.2007,  14:47 Найти цитируемый пост)
По вопросу сказать нечего, зачем поститься?

Сказать я вижу нечего тебе. На мой вопрос ты не ответил, а дал какой-то мутный код которые не хочет собираться. Это по твоему конструктивная беседа? Да ещё и на какие-то нелепые наезды начинаешь, вместо того чтобы предметно обсудить тему.
Цитата(apook @  27.9.2007,  14:47 Найти цитируемый пост)
 Не соответствия новому стандарту

Стандарт один. Понятия "новый и старый" стандарт сейчас нет.
PM MAIL WWW   Вверх
xvr
Дата 27.9.2007, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Цитата

но только на старом tcc
С этого и надо было начинать - tcc компилирует под ДОС а у него (у ДОСа) нет понятия 'недоступной памяти', т.е. писать можно куда угодно, в том числе и в нулевые адреса, т.е. через NULL указатель. (ДОС после этого скорее всего сломается, а может и нет)

В tcc был сделан специальный хак для отлова таких записей (причем только в small модели), начало области данных (те самые нулевые адреса для коротких указателей) было зарезервированно и заполненно специальными данными (не помню какими), после окончания программы startup проверял, что эта область не изменилась, и если это оказывалось не так, то выводилось то самое сообщение про 'NULL pointer assignment'

Отловить собственно МОМЕНТ присваивания автоматически увы не получится, только вручную по шагам.

PM MAIL   Вверх
nickless
Дата 27.9.2007, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 19
Всего: 181



Короче, я сегодня добрый smile 

Цитата(apook @  27.9.2007,  11:31 Найти цитируемый пост)
Пример без ошибок и предупреждений компелируется на Borland Turbo C++ 3.x

В топку такой компилятор...

Цитата(apook @  27.9.2007,  11:49 Найти цитируемый пост)
Что здесь написано

Переменные, объявлённые в for, не видны за её(его) пределами.

apook, код не только не соответствует стандарту, в нём еще просто много ошибок.
Если подправить синтакс, программа вываливается с Segfault-ом (ака Access Violation), что в твоём древнем компиляторе наверно называется "Null Pointer Assignment" smile 
Ловится это очень просто, например в gdb так:
Код
g++ -Wall -Wextra -pedantic -pipe -g main.cpp -o main
gdb ./main
(gdb) run
Starting program: /tmp/main

Program received signal SIGSEGV, Segmentation fault.
0xb7d966b4 in strcpy () from /lib/libc.so.6
(gdb) backtrace
#0  0xb7d966b4 in strcpy () from /lib/libc.so.6
#1  0x0804868c in main () at main.cpp:42

Со дебагером под дос разбирайся сам...

Проблемы тут были в перепутаных DATSZ и _OODSZ (красивые названия кстати ...по принципу "чтобы никто не догадался", сам придумал? smile ), вот в таких конструкциях 
Код
(char *)word[ i ]
 итд.

Вот исправленый код:
Код
#include<cstdio>
#include<cstring>

const int DATSZ     = 10;
const int _OODSZ    = 5;

struct DAT
{
    char **g_ood, **p_ood, **f_ood;
    int *sensor;
};

int main()
{
    char word[ ]="abcdefgij";
    DAT *acc;
    acc=new DAT[ DATSZ ];

    for( int i=0; i<DATSZ; i++ )
    {
        acc[ i ].g_ood=new char*[ _OODSZ ];
        acc[ i ].p_ood=new char*[ _OODSZ ];
        acc[ i ].f_ood=new char*[ _OODSZ ];
    }
    for( int j=0; j<DATSZ; j++ )
    {
        acc[ j ].sensor=new int[ DATSZ-j ];
    }
    for( int i=0; i<DATSZ; i++ )
    {
        for( int j=0; j<_OODSZ; j++ )
        {
            acc[ i ].g_ood[ j ]=new char[ 10 ];
            acc[ i ].p_ood[ j ]=new char[ 10 ];
        }
    }

    for( int i=0; i<DATSZ; i++ )
    {
        for(int j=0; j<_OODSZ; j++ )
        {
            strcpy( acc[ i ].g_ood[ j ], &word[ i ] );
            strcpy( acc[ i ].p_ood[ j ], &word[ i ] );
        }
    }

    for( int i=0; i<DATSZ; i++ )
    {
        for(int j=0; j<_OODSZ; j++ )
        {
            delete [] acc[ i ].g_ood[ j ];
            delete [] acc[ i ].p_ood[ j ];
        }
        delete [] acc[ i ].g_ood;
        delete [] acc[ i ].p_ood;
        delete [] acc[ i ].f_ood;
        delete [] acc[ i ].sensor;
    }
    printf("%p\n", (char*)word[3]);    // посмотри, что тут выводится ;)
    delete [] acc;
    return 0;
}



--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
Ln78
Дата 27.9.2007, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 25.11.2006

Репутация: 13
Всего: 15




Цитата(apook @  27.9.2007,  07:29 Найти цитируемый пост)
Да просто время жизни обьектов по разному расссматривается старым и более новым компилятором  


Цитата(apook @  27.9.2007,  12:49 Найти цитируемый пост)
Цитата(Daevaorn @  27.9.2007,  12:38 )
name lookup of ‘i’ changed for new ISO ‘for’ scoping

 Что здесь написано грамотей


Вроде как scope переводилось как "область видимости", "область действия", а "время жизни" - это, скорее, lifetime.

apook, опять хулиганишь? smile  
PM MAIL   Вверх
Daevaorn
Дата 27.9.2007, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(Ln78 @  27.9.2007,  15:18 Найти цитируемый пост)
Вроде как scope переводилось как "область видимости", "область действия", а "время жизни" - это, скорее, lifetime.

всё так и как, только вот как это относится к NPA не ясно. видимо и автору тоже.
рассматривать какую-то проблему на изначально не верном коде не правильно.
PM MAIL WWW   Вверх
apook
Дата 27.9.2007, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 794
Регистрация: 12.7.2006

Репутация: 9
Всего: 23




Цитата(nickless @  27.9.2007,  13:59 Найти цитируемый пост)
Проблемы тут были в перепутаных DATSZ и _OODSZ 
 Молодец! Так к чему-же это привело,

создан массив из 10 структур, в них двумерные массивы по "пять в одном", запускаем пять циклов и в каждом выделяем память для "десяти в одном", то есть по пять лишних для каждой структуры... Это не прокатывает с новым компилятором, а старый это проделывает. Надпись Null Pointer Assignment появляется при выходе из программы если сделать удаление правильно т.е не трогая лишние, так что-же тогдап получается такое в данном случае Null Pointer, пустой указатель или не существующий указатель? должно быть что не существующий в данном случае

Цитата(xvr @  27.9.2007,  13:54 Найти цитируемый пост)
после окончания программы startup проверял, что эта область не изменилась, и если это оказывалось не так, то выводилось то самое сообщение про 'NULL pointer assignment'


???

Кстати может вылести по поводу любого указателя напр FILE *f и не обязательно смысл одинаков, одинаково во всех случаях только то что причина указатель 





--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
xvr
Дата 28.9.2007, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Цитата(apook @ 27.9.2007,  15:02)

Цитата(xvr @  27.9.2007,  13:54 Найти цитируемый пост)
после окончания программы startup проверял, что эта область не изменилась, и если это оказывалось не так, то выводилось то самое сообщение про 'NULL pointer assignment'


???

Кстати может вылести по поводу любого указателя напр FILE *f и не обязательно смысл одинаков, одинаково во всех случаях только то что причина указатель

Уточнил, там (с нуля) лежит надпись 'Borland C++ - Copyright 1991 Borland Intl.', и после завершения main производится подсчет ее контрольной суммы (просто сумма всех байтов), если она не совпала с ожидаемой - NULL pointer assignment

Что касается 'любого указателя, например FILE*', то NULL указатель это не какой то специальный указатель, а вообще ЛЮБОЙ указатель, значение которого равно NULL (или 0, что однои тоже)

И совсем не обязательно самому записывать что-то по такому указателю, это может сделать и библиотека компилятора, если использовать ее сервисы неправильно, например достаточно сделать 2 раза delete (или free) одного и того же указателя, при первом delete будет возвращена память в менеджер памяти (указанный блок памяти будет подвязан к списку свободных), при втором delete он будет подвязан еще раз, что приведет к искажению указателей из ДРУГИХ блоков на него, после чего вся куча оказывается разрушеной и последующие обращения к менеджеру памяти скорее всего вызовут записи по этим разрушенным поинтерам, которые вполне могут оказаться и нулевыми.

С FILE* то же самое, библиотека может разрушить внутренние структуры если 2 раза вызвать fclose например.
PM MAIL   Вверх
akizelokro
Дата 28.9.2007, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Крокодил
**


Профиль
Группа: Участник
Сообщений: 761
Регистрация: 30.7.2007

Репутация: 1
Всего: 5



http://www.faqs.org/faqs/msdos-programmer-...section-25.html

А в чем вообще проблема-то?


--------------------
a = a + b; b = a - b; a = a - b;
PM MAIL   Вверх
apook
Дата 28.9.2007, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 794
Регистрация: 12.7.2006

Репутация: 9
Всего: 23



Цитата

А в чем вообще проблема-то?

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

//Ну да тут все ясно вопрос можно считать решенным хотя для меня это не так



--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0826 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.