HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 02.05.2009, 22:40
desTiny
Reservists Of Antichat - Level 6
Регистрация: 04.02.2007
Сообщений: 1,152
Провел на форуме:
3008839

Репутация: 1502


По умолчанию

>>рекомендуется обязательно приравнять указатель к нулю

а зачем - там не написано?
__________________
Bedankt euch dafür bei euch selbst.

H_2(S^3/((z1, z2)~(exp(2pi*i/p)z1, exp(2pi*q*i/p)z2)))=Z/pZ
 
Ответить с цитированием

  #2  
Старый 02.05.2009, 23:04
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме:
2209675

Репутация: 537


Отправить сообщение для Дикс с помощью ICQ
По умолчанию

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

а мой компилятор сам приравнивает к нулю.

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

  #3  
Старый 04.05.2009, 20:33
desTiny
Reservists Of Antichat - Level 6
Регистрация: 04.02.2007
Сообщений: 1,152
Провел на форуме:
3008839

Репутация: 1502


По умолчанию

Цитата:
Сообщение от Дикс  
а мой компилятор сам приравнивает к нулю.
лучше приравнивай.а ещё лучше - сразу следи, чтобы не обратиться к нему после делита. но всё равно обнули)
__________________
Bedankt euch dafür bei euch selbst.

H_2(S^3/((z1, z2)~(exp(2pi*i/p)z1, exp(2pi*q*i/p)z2)))=Z/pZ
 
Ответить с цитированием

  #4  
Старый 04.05.2009, 21:38
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме:
1354067

Репутация: 599


По умолчанию

Цитата:
Сообщение от desTiny  
лучше приравнивай.а ещё лучше - сразу следи, чтобы не обратиться к нему после делита. но всё равно обнули)
отследить легко в хеллоуворлде. а в даже чуть более крупной ЛАБЕ, не то что в коммерческом проекте, можно банально проморгать удаление вектора. потом получается магическая ошибка, когда вызывается метод, но почему то данные неправильные. а все потому, что объект класса имеет указатель this, который убивается делитом, но не приравнивается нулю, и поэтому его можно разыменовать и получить данные. кароч кто видел такие моменты тот меня поймет, када в окне дебаг this = 0x00fea34d. это ацкие ошибки, которые могут вынести мозг и убить на дебаггинг лютые часы. поэтому обнулять обязательно. но еще лучше не юзать чистые указатели для хранения динамических объектов. смарт поинтеры решают.
 
Ответить с цитированием

  #5  
Старый 03.05.2009, 00:04
razb
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
Провел на форуме:
2868783

Репутация: 414


Отправить сообщение для razb с помощью ICQ
По умолчанию

я не уверен но вроде по стандарту после вызова delete/delete[] указатель становится равным NULL, во всяком случае надо глянуть стандарт, а на компилятор полагатся не стоит.
 
Ответить с цитированием

  #6  
Старый 03.05.2009, 19:29
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме:
1354067

Репутация: 599


По умолчанию

в стандарте не указано. поэтому лучше прравнивать, а еще лучше исользовать умные указатели. это спасет от утечек памяти.
 
Ответить с цитированием

  #7  
Старый 04.05.2009, 12:03
s_p_a_m
Участник форума
Регистрация: 08.02.2008
Сообщений: 116
Провел на форуме:
1608432

Репутация: 158
По умолчанию

пытаюсь скомпилить код, пишет ошибку " Не удается открыть файл include: math: No such file or directory" в чем может быть проблема ? (microsoft visual C++ 2008 express)
Код:
#include <iostream>
#include <math>               
#include <stdio>              
#include <conio>              
#include <stdlib>                    
#include <string>               
using namespace std;

 unsigned long dec=0;                 
 int oct[10],bin[10],hex[10];                
 int len=0;                    
 int count=0;                    
 char *vosm_strchar*)malloc(sizeof(char));         

 vvod()                                   
  {
    scanf("%s",vosm_str);                   
    for(int i=0;vosm_str[i];i+                        
     {
      oct[i]=vosm_str[i]-0x30;                    
       if((vosm_str[i]<'0')||(vosm_str[i]>'7'))          
     return 1;                         
     }
    len=i;                              
    return 0;                              
  }

void todec()                       
 {
  for(int i=0;i<len;i+
   dec+oct[i]*(pow(8,len-i-1)));          
 }

void tobin()                    
 {
   for(int i=0;i<len;i+
    switch(oct[i])                     
     {
     case 0: bin[i]=0;break;          
     case 1: bin[i]=1;break;          
     case 2: bin[i]=10;break;
     case 3: bin[i]=11;break;
     case 4: bin[i]=100;break;
     case 5: bin[i]=101;break;
     case 6: bin[i]=110;break;
     case 7: bin[i]=111;break;
     }
  }

void tohex()                    
 {
  int i=0;
  double temp = dec;                   
   while(temp>=16)              
   {
    hex[i]=16*(modf(temp/16, &temp));   
    i++;                                
    count++;                            
    switch(int(hex[i]))
     {
      case 10: hex[i]=0xA;break;        
      case 11: hex[i]=0xB;break;        
      case 12: hex[i]=0xC;break;
      case 13: hex[i]=0xD;break;
      case 14: hex[i]=0xE;break;
      case 15: hex[i]=0xF;break;
     }
   }
   hex[i]=temp;                    
 }

void vuvod()                    
 {
  printf("\nChislo v  8-ou s.s. = %s",vosm_str);
  printf("\nChislo v 10-ou s.s. = %ld",dec);
  printf("\nChislo v  2-ou s.s. = ");
   for(int i=0;i<len;i+               
    printf("%.3d",bin[i]);              
  printf("\nChislo v 16-ou s.s. = ");
   for(i=count;i>=0;i--)              
    printf("%X",int(hex[i]));          
 }

void main()
 {
  clrscr();
   if(vvod()==0)                 
    {
     todec();
     tobin();
     tohex();
     vuvod();
    }
   else
    puts("Chislo zapizano ne v 8-ou s.s.");
  getch();
                 
 }

Последний раз редактировалось s_p_a_m; 04.05.2009 в 12:09..
 
Ответить с цитированием

  #8  
Старый 04.05.2009, 12:14
slesh
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

в отсутствии файла math ))
попробуй написать math.h
или возьми его из другой версии типа VC++ 6.0
МЫ 2008 сильно урезан во многих модулях. хотя этот должен быть
 
Ответить с цитированием

  #9  
Старый 04.05.2009, 13:28
razb
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
Провел на форуме:
2868783

Репутация: 414


Отправить сообщение для razb с помощью ICQ
По умолчанию

Цитата:
в отсутствии файла math ))
попробуй написать math.h
В с++ в названиях всех сишных хэдэров должен быть префикс "c",
example:
#include <cstdio>
#include <cstring>

Цитата:
или возьми его из другой версии типа VC++ 6.0
МЫ 2008 сильно урезан во многих модулях. хотя этот должен быть
не имеют права это хэдэр со стандартной либы) каким бы не был экспресс билд, стандарт он должен поддерживать полностью.

Последний раз редактировалось razb; 04.05.2009 в 13:34..
 
Ответить с цитированием

  #10  
Старый 04.05.2009, 14:20
s_p_a_m
Участник форума
Регистрация: 08.02.2008
Сообщений: 116
Провел на форуме:
1608432

Репутация: 158
По умолчанию

Цитата:
Сообщение от razb  
В с++ в названиях всех сишных хэдэров должен быть префикс "c",
example:
#include <cstdio>
#include <cstring>


не имеют права это хэдэр со стандартной либы) каким бы не был экспресс билд, стандарт он должен поддерживать полностью.
Не удается открыть файл include: conio: No such file or directory уже как только не писал,и #include <conio>, и #include <cconio>, бесполезно
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Часто задаваемые вопросы по MySQL Серый PHP 5 28.12.2006 18:26
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости. Обсуждения. 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Уязвимости CMS / форумов 26 15.02.2005 22:57



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ