[C++][CODEBLOCKS] Program / system (?) zwariował

0

Siemka. Mam oooogromny problem. Pisze sobie programy pod OI . No fakt w kilku testach istnieje duże prawdopodobieństwo, że coś spieprzyłem tzn. wpisałem coś poza tablicę (przekroczyłem jej rozmiar), albo jakieś inne błędy. Wiem, że to skutkuje tym, że wpisuje coś do komórki w pamięci która jest odpowiedzialna za coś innego... nieważne....
Problem polega na tym, zrobiłem sobie klase:

class wynik
{
public:
    unsigned int p_segm;
    unsigned int k_segm;
    bool znaleziono;
};

i staram się zrobić tablicę w zapasie pamięci:

wynik *wyniki = new wynik[lb_wartosci]; 

I w tej linijce kompilator niczego nie zaznacza. Składnia i wszystko jest ok, w ogóle cały program jest w porządku. Jednak (za pomocą komentarzy) doszedłem do wniosku że właśnie przy wykonywaniu tej instrukcji dzieje się owa dziwna sytuacja. Już gdy wprowadzam informacje w konsoli system tuż przed wykonywaniem tej linii wywala błąd.. nie pamiętam dokładnie ale to jest dosyć znany bład:
instruckcja 0x636364** odwołująca się do 0x63463**** pamięć nie może być "read" ** (<- te liczby oczywiście na chybił trafił napisałem)
No i ja myśle... i myśle, gdzie tu jest błąd. Nie znalazłem. Ale jest jeszcze ciekawsza sytuacja. Programy który działał wcześniej poprawnie, gdy go na nowo skompilowałem wywala błąd. Tzn. podaje wartość: 4294967295 o ile to cokolwiek znaczy. Mam wcześniej skompilowaną wersję tego programu i ona działa poprawnie... Czy takie problemy mogą być spowodowane błędami jakie opisałem na początku ? Popełniłem również błąd w funckjach pritnf / scanf podając lub nie podając adres tam gdzie nie był potrzebny. Czyli ostateczne pytanie: zepsułem komputer ? :P aha antywirus nic nie pokazał komputer jest czysty.

PS: Przepraszam za nazwę tematu ale nie wiedziałem jak to lepiej zatytułować.

EDIT: problem chyba rozwiązany o ile definicja:

unsigned int x;
short int* liczby = new short int[x]; 

jest poprawna.

0
gortal napisał(a)

EDIT: problem chyba rozwiązany o ile definicja:

unsigned int x;
short int* liczby = new short int[x]; 

jest poprawna.
Pod warunkiem że pomiędzy temi liniami ustalasz wartość x…

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