Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Zmienne i struktury...

Ostatnio zmodyfikowano 2017-04-26 09:41
Autor Wiadomość
TobiPL
Temat założony przez niniejszego użytkownika
Zmienne i struktury...
» 2017-04-22 02:17:40
mogę użyć czegoś takiego ?...

struct 4b
{
bool one;
bool two;
bool three;
bool four;
}

i będzie zajmować to 4 bajty czy 4 bity czy może 1 bajt ?...

wiadomo w bajcie jest 8 bitów a mnie potrzeba wlasnie tych 4 tylko xD

jest jakis fajny sposob na uzyskanie tego ? ;x...




+ czy jest jakaś prosta metoda aby zarezerwować sobie pewna ilość RAM-u nawet jeśli się go nie używa ?...
w sensie aby mieć bezpieczeństwo że system nie zapisze mi dosłownie niczego od któregoś do któregoś miejsca...
będą one tylko i wyłącznie moje aż do odwołania ^_^

no i pytanie czy da się też w jakiś sposób blokować dostęp do odczytywania tych "komórek" ramu które zarezerwowałem sobie...

bo zdaję sobie sprawę że można podpatrzeć pamięć innego procesu...
chciałbym to zablokować aby inny program nie miał dostępu do mojego ramu...




nie wiem czy jest to dobry pomysł ale możecie się na ten temat wypowiedzieć...

bo wpadłem na coś takiego aby porozwalać "części" całej zmiennej w różne miejsca na zarezerwowanej
przestrzeni i aby przechowywać sposób składana ich w całość ^_^






ale najważniejsze to to pierwsze pytanie czyli czy używając takiej struktury jak napisałem
nie będę marnować pamięci... i ile zajmie taka struktura...

jak napisałem w złym miejscu to przenieście temat kochana administracjo xD tylko nie do kosza plz ;c...
jeśli taki w ogole istnieje...
P-160345
karambaHZP
» 2017-04-22 10:43:35
czy jest jakaś prosta metoda aby zarezerwować sobie pewna ilość RAM-u nawet jeśli się go nie używa ?...
placement new

i będzie zajmować to 4 bajty czy 4 bity czy może 1 bajt ?...
ale najważniejsze to to pierwsze pytanie czyli czy używając takiej struktury jak napisałem
nie będę marnować pamięci... i ile zajmie taka struktura...
sizeof
 i do dzieła.
Chcesz zminimalizować użycie pamięci, zadeklaruj zmienną
char
 i zapisuj poszczególne bity
z odpowiednim przesunięciem.
http://stackoverflow.com​/questions/18591924​/how-to-use-bitmask

bo zdaję sobie sprawę że można podpatrzeć pamięć innego procesu...
chciałbym to zablokować aby inny program nie miał dostępu do mojego ramu...
Zwykle system przydzielając pamięć pilnuje aby nikt niepowołany nie miał tam dostępu.
Oczywiście w zasięgu swojego programu musisz zadbać, aby nie uszkodzić swoich danych.

struct 4b
identyfikator tego typu jest nieprawidłowy.
P-160350
pekfos
» 2017-04-22 13:25:37
Możesz użyć pól bitowych, by mieć w strukturze pola dowolnej długości, w tym 1-bitowe. Rozmiar całej struktury jest zawsze w całych bajtach.
P-160353
mokrowski
» 2017-04-22 14:04:50
ale najważniejsze to to pierwsze pytanie czyli czy używając takiej struktury jak napisałem
nie będę marnować pamięci... i ile zajmie taka struktura...
Od C++11 dostępny jest nagłówek <cstdint>. W nim znajdziesz typy bezpośrednio informujące o swoim rozmiarze. Np. uint8_t to 8-bitowa dana całkowita pozbawiona znaku, int64_t to 64-bitowa dana całkowita ze znakiem itp.

bo zdaję sobie sprawę że można podpatrzeć pamięć innego procesu...
chciałbym to zablokować aby inny program nie miał dostępu do mojego ramu...
Co do zasady, z konta administracyjnego dostaniesz się do pamięci wszystkich procesów (tak w MS Window czy w GNU/Linux). Możesz co najwyżej nie pozwolić na wyrzucenie strony pamięci na przestrzeń wymiany lub zmienić parametry strony (współdzielona/prywatna, t/w itp). Z innego konta (pozbawionego specjalnych uprawnień), proces nie będzie mógł zajrzeć do Twojego.
Jeśli chcesz by inny proces pracujący jednocześnie z Twoim programem nie mógł przeczytać danych z Twojego procesu, to niestety ale trzeba uciekać się do innych technik. Najprostszą z nich jest szyfrowanie danych w pamięci ale to tylko czubek góry lodowej :-)
P-160356
TobiPL
Temat założony przez niniejszego użytkownika
» 2017-04-22 16:20:59
Dzięki Pekfos...
nie za bardzo umiem używać tego forum i nie jestem pewien czy mogę dać ci jakoś "Like" czy coś w tym stylu
ale i tak dzięki xD nieco słabo że rozmiar całej struktury jest zawsze w całych bajtach...


bo nawet jakbym chciał używać tam 4 by i tak zajmowało 8 tak ? ;/...
w sumie wielkim zaskoczeniem to nie jest... może gdzieś istnieje lepszy sposób ale na dzisiaj starczy xD




KarambaHZP
dzięki za link a co do "struct 4b" bo jest to tylko przykład ^_^
to nie jest rzeczywisty zapis w moim kodzie ale nie chciało mi się pisać tego dokładnie i sprawdzać błędów

co można dostrzec czytając całość jeśli tylko ktoś dostrzega brak przecinków oraz kropek na końcu zdania ^_^


Jeśli administracja chce możecie zamknąć ten temat albo zrobić coś z nim nie wiem...
odpowiedź tym razem jakąś otrzymałem ^_^ !
P-160359
Saran
» 2017-04-22 17:47:19
Jeśli chcesz zaoszczędzić, możesz też po prostu zrobić pole bitowe z 8 bit-boolami, oraz w jakiś sposób zasymulować traktowanie jednego obiektu jako dwa.
P-160362
TobiPL
Temat założony przez niniejszego użytkownika
» 2017-04-26 04:24:21
Saran sam się domyśliłem już ^_^...
ale dzięki za dodatkowa odpowiedź :P...

P-160502
Rashmistrz
» 2017-04-26 09:41:12
jest jakis fajny sposob na uzyskanie tego ? ;x...
https://pl.wikipedia.org/wiki​/Pole_bitowe
EDIT:Pamiętaj, że pole ma typ taki jaki
został użyty do stworzenia tego pola.
Kompilator postara to się ładnie upchać,
ale i tak cała struktura będzie zajmować
co najmniej wielkość największego typu
jaki został użyty do jej konstrukcji.

C/C++
// Example program
#include <iostream>
using std::cout;

struct bits_4
{
    bool a: 1;
    bool b: 1;
    bool c: 1;
    bool d: 1;
};

int main()
{
    bits_4 mask;
    cout << "sizeof(bits_4): " << sizeof( bits_4 ) << '\n';
   
    mask.a = 0;
    mask.b = 0;
    mask.c = 0;
    mask.d = 0;
   
    cout << mask.a << mask.b << mask.c << mask.d << '\n';
   
    mask.b = 1;
    mask.d = 1;
   
    cout << mask.a << mask.b << mask.c << mask.d << '\n';
}
C/C++
// Example program
#include <iostream>
using std::cout;

struct bits_9
{
    bool a: 1;
    bool b: 1;
    bool c: 1;
    bool d: 1;
    bool e: 1;
    bool f: 1;
    bool g: 1;
    bool h: 1;
    bool i: 1;
};

int main()
{
    bits_9 mask;
    cout << "sizeof(bits_9): " << sizeof( bits_9 ) << '\n';
}
P-160506
« 1 »
  Strona 1 z 1