
06.04.2009, 22:31
|
|
Постоянный
Регистрация: 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
|
|
|

06.04.2009, 22:18
|
|
Участник форума
Регистрация: 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..
|
|
|

06.04.2009, 22:41
|
|
Постоянный
Регистрация: 04.11.2007
Сообщений: 303
С нами:
9746420
Репутация:
119
|
|
Сообщение от awdrg
Код:
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
Aborted
это вроде сообщение о переполнении стека...
и где, собсна, перехват(try/catch)? 
|
|
|

06.04.2009, 22:53
|
|
Участник форума
Регистрация: 30.01.2009
Сообщений: 196
С нами:
9094175
Репутация:
66
|
|
в учебнике написано, что если оператор NEW не может присвоить адрес для памяти массиву то он помещает в него значение NULL. Ну в моем коде я сверял его и использовал ветвление  По идее, все должно работать. Но не работает.
|
|
|

06.04.2009, 23:44
|
|
Познавший АНТИЧАТ
Регистрация: 01.06.2008
Сообщений: 1,047
С нами:
9443906
Репутация:
3313
|
|
awdrg, переполнение стэка, юзай оператор static
|
|
|

07.04.2009, 01:31
|
|
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
С нами:
9017461
Репутация:
414
|
|
2awdrg при переполнении оператор new выкидует исключение bad_alloc, вот его и отлавлюй
|
|
|

07.04.2009, 16:25
|
|
Участник форума
Регистрация: 30.01.2009
Сообщений: 196
С нами:
9094175
Репутация:
66
|
|
Спасибо за советы, нашел мануал на эту тему (кому будет интересно)
http://users.msu.dubna.ru/~ovg/c++course/p2-3.html
|
|
|

07.04.2009, 20:29
|
|
Новичок
Регистрация: 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.
|
|
|

07.04.2009, 20:31
|
|
Познавший АНТИЧАТ
Регистрация: 01.06.2008
Сообщений: 1,047
С нами:
9443906
Репутация:
3313
|
|
это delphi а не c++
|
|
|

07.04.2009, 20:47
|
|
Новичок
Регистрация: 09.12.2008
Сообщений: 7
С нами:
9169575
Репутация:
0
|
|
Сообщение от Chaak
это delphi а не c++
Так это общая ветка "С/С++, C#, Delphi, .NET, Asm".
|
|
|
|
 |
|
Предыдущая тема
Следующая тема
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|