Jak stworzyć tablice tak żeby nie była wypełniona zerami tylko jakimiś przypadkowymi wartościami które przedtem znajdowały się na tym obszarze pamięci (chodzi mi oto zeby jej nie wypełniać potem w programie).
Stworzyć tablicę lokalną i używać w zasięgu funkcji, albo przydzielić tablicę poprzez new?
No tak zapomniałem - chodzi o ANSI C
Z powodu rozmiaru nie mogę jej lokalnie zdeklarowac
no to zaalokuj za pomoca malloc() jaki to problem? Tylko calloc() ci zeruje zawartość.
Jak szukasz wartości losowych to ich nie szukaj na stercie. Programy nie widzą siebie wzajemnie, zaś generalnie strony pamięci przydzielane na różne rzeczy i tak są zerowane... Nie pamiętam jak w Linuksie (ze względów bezpieczeństwa powinno być tak samo), ale pod Windows to głównie 'śmieci' z własnego procesu znajdziesz, te zaś są raczej dosyć deterministyczne.
Czyli generator tablic musze użyć i dołączyć do kodu ;/
Chyba że da się jakoś "nieinwazyjnie" to załatwic...(tylko podstawowe działanie języka) coś mi się kojarzy ze zmiennymi automatycznymi tylko nie pamiętam czy to w tym języku akurat i jak składnia wygląda ;p
To łaskawie napisz co chcesz uzyskać i po cholerę. Jeżeli chcesz wykorzystać pamięć procesu jako źródło entropii dla generatora pseudolosowego to... lepiej tego nie rób bo do Pwnie Awards zgłoszę.
/*Najprostsza najbanalniejsza deklaracja typu */
int tab[][][]; //niewiem niech ma nawet 1 mb
/*tablica niech ma nawet w całej objętości 0 ale niech się pojawi choć raz jakiś text np ścierzka pliku albo całkowicie przypadkowa wartość*/
100% pewien jestem że dało się taki efekt dla pojedynczej zmiennej uzyskać.
Po cholerę to uzyskać? Szczerze to sam nie wiem - funkcji ma nie być jak już jakieś są to własne.
Dla pojedynczej zmiennej? Po prostu zrób ją zmienną lokalną... Zmienne automatyczne == zmienne lokalne. Tylko się nie zdziw jak nawet na różnych komputerach ta sama zmienna o wartości osobliwej będzie mieć tą samą wartość, kupa rzeczy na stosie/w rejestrach jest (względnie) stała/podobna nawet na różnych systemach. Dla tablic zaś przydzielenie przy pomocy new/malloc/HeadAlloc/GlobalAlloc(dwie ostatnie pod Windows, zaś druga bazuje na pierwszej) i jakieś pozostałości z poprzednich alokacji dostaniesz. Polecam obejrzeć pod debuggerem jak to wygląda.
Tja, zastosowanie tego jako źródła entropii może wydawać się w pierwszej chwili genialnym pomysłem, ale niestety z punktu widzenia bezpieczeństwa to krótko mówiąc fail.