Dynamiczne alokowanie pamięci (spr. czy dobrze napisane)

0

Witajcie!

Chciałbym was się zapytać forumowicze czy ten kod został napisany poprawnie czy jednak coś jest nie tak kod wykonuje się dobrze (chyba, że się mylę) zmienna ma być typu UINT*

#include <fstream>

using namespace std;

int main()
{
	unsigned char **wsk;
	wsk = new unsigned char*;
	*wsk = (unsigned char*)"TEXT";
	
	printf("%s\n",*wsk);
	
	delete wsk;
	
	printf("%s\n",*wsk); //sprawdzenie czy dalej istnieje zmienna
}
0

Pomyliłem się zmienna nie ma być typu UINT* tylko UCHAR*

0

Najdziwniejsza rzecz jaką widziałem mówiąc szczerze. Źle jest.

0

To jak to powinno być pomógłbyś?

0

Ja po prostu chce utworzyć zmienną dynamicznie a potem ją wykasować z pamięci

Tutaj poprawiony (pewnie znowu źle?) :/

user image

2

Jest prawie dobrze:

const char **wsk = new const char *;
*wsk = "TEXT";
printf("%s\n", *wsk);
delete wsk;

Tylko nie rozumiem za bardzo celu.

0

To jest mi potrzebne do szyfrowania RC4 i do tego jest mi potrzebne UCHAR*

user image

0

To prawie na pewno robisz źle. Funkcja ta przyjmuje prawdopodobnie bajty, które chcesz zakodować. Tak jak to zrobiłeś to tak na prawdę przesłałeś wskaźnik do zakodowania, a nie ciąg bajtów który chcesz zakodować.

char test[] = { "TEXT" };
unsigned char *ptr = reinterpret_cast<unsigned char *>(&test[0]);
rc4(ptr, ...);
0

No tak miałeś racje

2
    delete wsk;
 
    printf("%s\n",*wsk); //sprawdzenie czy dalej istnieje zmienna

Najpoważniejszy błąd. Jak to sobie wyobrażasz? Czyścisz pamięć, mówisz że już jej nie chcesz a nagle ją czytasz? UB + odwoływanie się do nie swojej (bo zwolnionej już!) pamięci.

1 użytkowników online, w tym zalogowanych: 0, gości: 1