ANTICHAT Forum
HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
НОВЫЕ ТОРГОВАЯ НОВОСТИ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 06.04.2009, 22:31
criz
Постоянный
Регистрация: 04.11.2007
Сообщений: 303
С нами: 9746420

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

Цитата:
Сообщение от _nic  
Подскажите где тут ошибка
может дело в
Цитата:
Сообщение от msdn  
If the heap specified by the hHeap parameter is a "non-growable" heap, dwBytes must be less than 0x7FFF8.
это для HeapAlloc
 
Ответить с цитированием

  #2  
Старый 06.04.2009, 22:18
awdrg
Участник форума
Регистрация: 30.01.2009
Сообщений: 196
С нами: 9094175

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

еще такой вопрос по памяти: хочу сделать обработку исключений следующим способом:
Код:
#include <iostream>
using namespace std;

main()
{
   char * a;
   for (int x = 0; x<1000; x++)
   {
      a = new char[10000000];
      if (a == NULL)
      {
         cout << "Error allocating memory\n";
         return 0;
      }         
      else
      { 
         cout << x << ")" << "memory allocated successfully\n";
      }      
   } 
   return 0;
}
но при превышении лимита выделяемой памяти пишет в консоли не мое сообщение а вот что:
Код:
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc
Aborted
запускал в bash'e никсов. Как я понимаю это ограничение на уровне самой ОС и его нельзя обойти? :-/

Последний раз редактировалось awdrg; 06.04.2009 в 22:25..
 
Ответить с цитированием

  #3  
Старый 06.04.2009, 22:41
criz
Постоянный
Регистрация: 04.11.2007
Сообщений: 303
С нами: 9746420

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

Цитата:
Сообщение от awdrg  
Код:
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc
Aborted
это вроде сообщение о переполнении стека...
и где, собсна, перехват(try/catch)?
 
Ответить с цитированием

  #4  
Старый 06.04.2009, 22:53
awdrg
Участник форума
Регистрация: 30.01.2009
Сообщений: 196
С нами: 9094175

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

в учебнике написано, что если оператор NEW не может присвоить адрес для памяти массиву то он помещает в него значение NULL. Ну в моем коде я сверял его и использовал ветвление По идее, все должно работать. Но не работает.
 
Ответить с цитированием

  #5  
Старый 06.04.2009, 23:44
Chaak
Познавший АНТИЧАТ
Регистрация: 01.06.2008
Сообщений: 1,047
С нами: 9443906

Репутация: 3313


По умолчанию

awdrg, переполнение стэка, юзай оператор static
 
Ответить с цитированием

  #6  
Старый 07.04.2009, 01:31
razb
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
С нами: 9017461

Репутация: 414


По умолчанию

2awdrg при переполнении оператор new выкидует исключение bad_alloc, вот его и отлавлюй
 
Ответить с цитированием

  #7  
Старый 07.04.2009, 16:25
awdrg
Участник форума
Регистрация: 30.01.2009
Сообщений: 196
С нами: 9094175

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

Спасибо за советы, нашел мануал на эту тему (кому будет интересно)
http://users.msu.dubna.ru/~ovg/c++course/p2-3.html
 
Ответить с цитированием

  #8  
Старый 07.04.2009, 20:29
pira
Новичок
Регистрация: 09.12.2008
Сообщений: 7
С нами: 9169575

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

Помогите упростить исходник пожалуйста. Программка у меня работает, но написано по-нубовски.
Можно же что-то из этого переписать на function

Код:
unit auth;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  IdHTTP, ExtCtrls, RXShell, RXClock, ComCtrls;

type
  TForm5 = class(TForm)
    http1: TIdHTTP;
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Timer1: TTimer;
    RxTrayIcon1: TRxTrayIcon;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure RxTrayIcon1DblClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
  procedure OnMinimize(Sender: TObject);
    { Public declarations }
  end;

var
  Form5: TForm5;

implementation

{$R *.dfm}
// Сворачивание в трей.
procedure TForm5.FormCreate(Sender: TObject);
begin
Application.onMinimize:=OnMinimize;
end;

procedure TForm5.OnMinimize(Sender: TObject);
begin
RxTrayIcon1.Show; //Показываем иконку в трее
 ShowWindow(Application.Handle,SW_HIDE); //Скрываем окно приложения
  end;

procedure TForm5.RxTrayIcon1DblClick(Sender: TObject);
begin
 Application.Restore; //Восстанавливаем окно
 SetForeGroundWindow(Application.MainForm.Handle); //Активизируем окно
  RxTrayIcon1.Hide; //Прячем иконку из трея
end;

// Запуск висения.
procedure TForm5.Timer1Timer(Sender: TObject);
var params,responseres:tstringlist;
begin
params:=TStringList.Create;
responseres:=TStringList.Create;
try
responseres.Text:=http1.Post('http://www.dmbchat.ru/refresh.php?say=aoaiaa&addr=Aey',params);
if Pos('refresh.php',responseres.Text)>0 then Memo1.Lines.Add('Вы успешно написали фразу.')
else Memo1.Lines.Add('Вы не в чате. Перезаходим.');
while Pos('refresh.php',responseres.Text)<=0 do begin
Button1.Click;
Exit;
end;
finally
params.free;
responseres.free;
end;
end;

// Вход в чат.
procedure TForm5.Button1Click(Sender: TObject);
var params,responseres:tstringlist;
Login, Password: string;
begin
params:=TStringList.Create;
responseres:=TStringList.Create;
try
Login:= Edit1.Text;
Password:= Edit2.Text;
params.Add('login='+Login);
params.Add('password='+Password);
responseres.Text:=http1.Post('http://www.dmbchat.ru/login.php',params);
if Pos('refresh.php',responseres.Text)>0 then
Memo1.Lines.Add('Вы успешно вошли в чат.')
else Memo1.Lines.Add('Ошибка! Вы не вошли в чат.');
finally
params.free;
responseres.free;
end;
while (Edit1.Text='') or (Edit2.Text='') or (Length(Edit1.Text) < 2) or (Length(Edit2.Text) < 5) do begin
ShowMessage ('     Логин или Пароль введён неверно.');
Exit;
end;
Edit1.Enabled:=False;
Edit2.Enabled:=False;
Button2.Enabled:=True;
Timer1.Enabled:=True;
end;

// Выход из чата.
procedure TForm5.Button2Click(Sender: TObject);
var params,responseres:tstringlist;
begin
params:=TStringList.Create;
responseres:=TStringList.Create;
try
params.Add('exit');
responseres.Text:=http1.Post('http://www.dmbchat.ru/logout.php',params);
finally
params.free;
responseres.free;
end;
Timer1.Enabled:=False;
Edit1.Enabled:=True;
Edit2.Enabled:=True;
Button2.Enabled:=False;
end;

end.
 
Ответить с цитированием

  #9  
Старый 07.04.2009, 20:31
Chaak
Познавший АНТИЧАТ
Регистрация: 01.06.2008
Сообщений: 1,047
С нами: 9443906

Репутация: 3313


По умолчанию

это delphi а не c++
 
Ответить с цитированием

  #10  
Старый 07.04.2009, 20:47
pira
Новичок
Регистрация: 09.12.2008
Сообщений: 7
С нами: 9169575

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

Цитата:
Сообщение от Chaak  
это delphi а не c++
Так это общая ветка "С/С++, C#, Delphi, .NET, Asm".
 
Ответить с цитированием
Ответ



Предыдущая тема Следующая тема
Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Часто задаваемые вопросы по 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 ™ © 2001- Antichat Kft.