LINUX.ORG.RU
ФорумTalks

[издевательство на offtopic'ом]


0

1

От великага шила в попе, сделал я сей прикол:

#include <stdlib.h>
#include <stdio.h>

int main(int argc, char *argv[]){
int _c;
sscanf(argv[1],"%i", &_c);
void *f = calloc((_c*262144), sizeof(int));
return 0;
} 

и собирался он так:

g++ -march=native -mtune=native -O2 -pipe c.c -o mem.clear

Соответственно:

./mem.clear 5000

вызывал отличный своп у тукса.

И вот на Семёрке x64 поставил я Visual Studio 2010. Скомпилял. И тут я понял - хитра ось. Память то реально не выделяет.

Вопрос. Как мне переделать сию шутку так, чтобы в Винде был такой же своппинг?

★★

Раньше младохацкеры ныли, что плохая ламерская винда не даёт вешаться на прерывание и писать в порты. Теперь до свопа дошли :)

tx
()

Да-да, это вам не кривое наколенное поделие финского студентишки, это бызныс и ынтырпрайс!

Cancellor ★★★★☆
()

Ну а если забить эту память чем-нибудь? Или вместо выделения памяти ошибка вылезает?

vkos ★★
()

FreeBSD, вообще ничего не произошло.

zgen ★★★★★
()

>Память то реально не выделяет.

Попробуй VirtualAlloc.

Absurd ★★★
()

Не взлетел

GCC 4.3.2

GotF ★★★★★
()

А если записать что-нибудь в верхнюю часть выделенной памяти?

HiddenComplexity
()
Ответ на: комментарий от kompas

Угу, с 50000 что-то пытается сделать, но быстро помирает, не заняв и половины памяти. С 51000 где-то и выше — молча завершается сразу.

GotF ★★★★★
()

g++ 4.4.5
Не работает.

drull ★☆☆☆
()

OpenBSD 5много0 - ничего не происходит? а что-то должно? )

nerfur ★★★
()

-=:=-

>Ну а если забить эту память чем-нибудь? Или вместо выделения памяти ошибка вылезает?

нене, ошипги нету.

А вот как забить? Какой синтаксис должен быть, чтобы забить ТАКОЕ кол-во элементов? Как доступ получить?

(Не работает | Не взлетело)

O_o УМВР. gentoo x64. 4gb оконной рамы и свап на 6 гиг (4 + 2hiber).

Попробуй VirtualAlloc.

Попробую.

P.S. ддадада...я аццкая нупь

KosmiK ★★
() автор топика

Может перед ретурном хоть sleep поставить?

urxvt ★★★★★
()
Ответ на: комментарий от xtron

-=:=-

#include <stdlib.h>
#include <stdio.h>
#include <memory.h>
#include <windows.h>

int main(int argc, char *argv[]){
int _c;
sscanf(argv[1],"%i", &_c);
void *f = (void *)calloc((_c*262144), sizeof(int));
memset (f,0,(_c*262144));
Sleep (10000);
return 0;
}

В итоге таскманагер показывает: Память 2гб, Выделено 8.

Но..сваппинга не достиг.

KosmiK ★★
() автор топика
Ответ на: -=:=- от KosmiK

-=:=-

увеличил memset (f,0,(_c*1048576));
Но теперь напоролся на предел в 2Гб. Ух.
НО - три таких бяки по 2000Mb - и 7ка в знатном баттхерде.

KosmiK ★★
() автор топика
Ответ на: -=:=- от KosmiK

>Но теперь напоролся на предел в 2Гб.

В long mode, ага.

nanonymous
()
Ответ на: -=:=- от KosmiK

может там какой то хитрый memset, сделай

unsigned char *p = (unsigned char*)f;
for (size_t i=0; i < (_c*262144); i++)
{
*p = (unsigned char)i;
}

quest ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.