🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

4 total messages Started by Borneq Wed, 18 May 2016 09:18
Jak sprawdzić czy new przydzielił mi pamięć?
#308564
Author: Borneq
Date: Wed, 18 May 2016 09:18
10 lines
1070 bytes
#include <stdint.h>

int main()
{
	uint8_t *bigbuf;
	bigbuf = new uint8_t[4000000000*1024 * 1024 * 1024];
	return 0;
}

Ani nie ma wyjątku ani bigbuf nie jest NULL. Co zrobić?
Re: Jak sprawdzić czy new przydzielił mi pamięć?
#308565
Author: Borneq
Date: Wed, 18 May 2016 09:22
14 lines
1274 bytes
W dniu 18.05.2016 o 11:18, Borneq pisze:
> #include <stdint.h>
>
> int main()
> {
>     uint8_t *bigbuf;
>     bigbuf = new uint8_t[4000000000*1024 * 1024 * 1024];
>     return 0;
> }
>
> Ani nie ma wyjątku ani bigbuf nie jest NULL. Co zrobić?

Jest wyjątek, a ta duża liczba po prostu się zawijała i okazywała się 
mniejszą.
Re: Jak sprawdzić czy new przydzielił mi pamięć?
#308566
Author: M.M.
Date: Thu, 19 May 2016 06:38
17 lines
1852 bytes
On Wednesday, May 18, 2016 at 11:22:13 AM UTC+2, Borneq wrote:
> W dniu 18.05.2016 o 11:18, Borneq pisze:
> > #include <stdint.h>
> >
> > int main()
> > {
> >     uint8_t *bigbuf;
> >     bigbuf = new uint8_t[4000000000*1024 * 1024 * 1024];
> >     return 0;
> > }
> >
> > Ani nie ma wyjątku ani bigbuf nie jest NULL. Co zrobić?
> 
> Jest wyjątek, a ta duża liczba po prostu się zawijała i okazywała się 
> mniejszą.

bigbuf = new uint8_t[4000000000ull * 1024 * 1024 * 1024];
Re: Jak sprawdzić czy new przydzielił mi pamięć?
#308567
Author: Dawid Bautsch
Date: Sun, 22 May 2016 17:40
3 lines
1714 bytes
Tak jak wskazał Borneq - zmienna nie jest w stanie przechować wartości tak wielkiej, więc leci od zera.

Inna sprawa- taka konstrukcja nie ma sensu, przecież już pierwsza wartość (4000000000) to niecałe 4 GB. Pomnożenie tego przez 1024 x 1024 x 1024 da nam jakąś kosmiczną wartość. Żaden system nie przydzieli takiej pamięci w jednym ciągłym bloku.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads