• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Czemu visual studio w trybie debug wyrzuca błąd, a w release jest wszystko okej?

Mały hosting, OGROMNE możliwości
0 głosów
573 wizyt
pytanie zadane 22 listopada 2023 w C i C++ przez Daaa22 Dyskutant (8,250 p.)

 

Jak zmienię z debug na release to jest wszystko okej. Czemu tak się program zachowuje?

1 odpowiedź

0 głosów
odpowiedź 22 listopada 2023 przez adrian17 Mentor (354,880 p.)
Jakby co, nie widać dobrze na tej rozdzielczości screenshota. Możesz wrzucić kod jako tekst tutaj?

W każdym razie - nie jest "okej", tylko kod ma błąd. To że tego nie zauważasz teraz i wszystko wydaje się działać dobrze, nie znaczy że nie wywali się np u kogoś innego, albo u Ciebie za czterdziestym odpaleniem. Tryb debug dodaje dodatkowe walidacje podczas działania programu, więc to łapie.
komentarz 22 listopada 2023 przez tkz Nałogowiec (42,040 p.)

Tryb debug dodaje dodatkowe walidacje podczas działania programu, więc to łapie.

Co masz na myśli? O jakich walidacjach mówisz? 

 

Sam kod i wejście wygląda tak jakby wychodził po za zakres tablicy. Tablica 3, wejście "123\0" czyli 4. 

komentarz 22 listopada 2023 przez adrian17 Mentor (354,880 p.)

Tablica 3, wejście "123\0" czyli 4. 

Tak zgaduję, ale nie chciałem się rozpisywać z pewnością bez screena.

O jakich walidacjach mówisz? 

No... dokładnie ta która wyskoczyła na screenshocie ;D Zgaduję że 'debug assertion failed' lub 'debug error', sprawdzający naruszenie stosu.

BTW, polecam od razu odpalać program w debuggerze (wielki guzik ze strzałką na górze), to zamiast pokazywać taki wielki popup, to od razu się ładnie zatrzyma i pokaże na której linii się posypał.

komentarz 23 listopada 2023 przez j23 Mędrzec (195,220 p.)

Zgaduję że 'debug assertion failed' lub 'debug error', sprawdzający naruszenie stosu.

VC++ w trybie Debug daje znaczniki przed i za blokami pamięci, które są sprawdzane przed zwolnieniem. Jeśli znacznik zostanie nadpisany, leci asercja. W Release tego nie ma, dlatego "działa".

Podobne pytania

0 głosów
1 odpowiedź 1,616 wizyt
pytanie zadane 5 grudnia 2017 w C i C++ przez Damian Prymus Początkujący (380 p.)
0 głosów
1 odpowiedź 829 wizyt
pytanie zadane 13 stycznia 2019 w C i C++ przez milioneq Początkujący (260 p.)
0 głosów
1 odpowiedź 1,129 wizyt
pytanie zadane 3 stycznia 2019 w C i C++ przez Kacper Lasota Początkujący (250 p.)

93,717 zapytań

142,629 odpowiedzi

323,261 komentarzy

63,261 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...