На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> Попробуйте плиз код компильнуть
    Надо что б в Вс3.1 работал, а он на одном компе работает, на другом нет. В Вс5.01 тоже работает, а в 3.1 вылетает с "Assertion failed: *((unsigned char*) blk+i)==BLK_DATA, file new.cpp line 167"
    В чем дело может быть???

    #include<stdio.h>
    #include<string.h>
    const L=50;

    class TString
    {
    public:
    TString();
    ~TString(){delete []theString;}
    operator char*();
    void operator = (char*);
    void print();
    private:
    char* theString;
    };

    TString::TString(){
    int i;
    theString=new char[L];
    for(i=0;i<L-1;i++){
     theString[i]=0;
    }
    }

    void TString::print()
    {
    int i;
    for(i=0;i<L-1;++i)
    {
    printf("%c",theString[i]);
    }
          printf("\n");

    }

    void TString::operator = (char* inp){
    int i=0;
    do{
     theString[i]=inp[i];
     i++;
    }while(i<L && i<strlen(inp));
    }

    TString::operator char* (){
    return theString;
    }



    void main()
    {

    TString* n;
    n=new TString[4];
    printf("Заполняем:\n");
    n[0]="aaaaa";
    n[1]="bbbbb";
    n[2]="ccccc";
    n[3]="ddddd";
    printf("Печатаем:\n");
    n[0].print();
    n[1].print();
    n[2].print();
    n[3].print();

    delete [] n;

    }
      Ты бы хоть сказал, где строка 167... Но вот, я не поленился, написал, немного изменил, и ничего не вылетает. ВС++ 3.1.
      #include <string.h>
      #include <stdio.h>
      #include <conio.h>

      const L=50;

      class String
      {
      public:
       TString();
       ~TString() { delete [] theString; }
       operator char *();
       void operator = (char *);
       void print();
      private:
       char * theString;
      };

      TString::TString()
      {
       thestring = new char[L];
       for(int i=0;i<L-1;i++) theString[i]=0;
      }

      void TString::print()
      { for(int i=0;i<L-1;printf("%c",theString[i++]); }

      void TString::operator = (char * inp)
      { for(int i=0;i<L && i<strlen(inp);theString[i] = inp[i++]); }

      TString::operator char* ()
      { return theString; }

      void main()
      {
       clrscr();
       TString *n = new TString[4];
       printf("Filling...\n");
       n[0]="aaaaa"; n[1]="bbbbb";
       n[2]="ccccc"; n[3]="ddddd";
       printf("Printing...\n");
       for(int i=0;i<4;n[i++].print());
       delete [] n;
       getch();
      }

        А вылетало?
        Если бы я знал где эта 167 строка smile.gif
          Я смотрел код и сразу исправлял как считал нужным, запускаю - ничего не вылетает. А ты найди где 167 строка smile.gif
            Цитата
            Env0der, 6.12.03, 11:55
            Если бы я знал где эта 167 строка



            Где, где. Ясно же сказанно - new.cpp.
              В том-то и дело, что я слыхом не слыхивал про такой файл...
              1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0241 ]   [ 15 queries used ]   [ Generated: 26.05.24, 08:48 GMT ]