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

question-closed Dlaczego Naruszam pamięć ?

Object Storage Arubacloud
0 głosów
197 wizyt
pytanie zadane 1 grudnia 2019 w C i C++ przez PirchHD Obywatel (1,730 p.)
zamknięte 1 grudnia 2019 przez PirchHD

Cześć właśnie piszę grę "Gra w życie". Jak na razie zrobiłem wytwarzanie losowej tablicy (Na razie co odpale program jest taka sama ale to zmienie) oraz wypisywanie jej wraz z liczeniem cykli (Na razie jest ich 10) . Myślałem że nadpisałem tablice ale moim zdanie nie :p Prosze o pomoc

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int PierwszaTablicaLosowa();
int WypiszTab();

int tab[10][10];

int main(){
  PierwszaTablicaLosowa();
 for(int cykl = 0; cykl <= 10; cykl++){
  system("sleep 1");
  WypiszTab(tab[10][10]);
  system("clear");
 printf("\n Cykl: %d \n", cykl);
 }
return 0;
}
 
int PierwszaTablicaLosowa(){
  for (int i = 0; i < 10; i++){
    for (int j = 0; j < 10; j++){
      tab[i][j] = rand()%2;
      printf("%d ", tab[i][j]);
    }
  printf("\n");
  }
 return tab[10][10];
}

int WypiszTab(int tab[10][10]){
  for (int i = 0; i < 10; i++){
    for (int j = 0; j < 10; j++){
      printf ("%d",tab[i][j]);
    }
  printf ("\n ");
  }
return tab[10][10];
}

 

komentarz zamknięcia: Najlepsza

1 odpowiedź

0 głosów
odpowiedź 1 grudnia 2019 przez JAKUBW Nałogowiec (33,470 p.)
wybrane 1 grudnia 2019 przez PirchHD
 
Najlepsza
Tablica o nazwie tab ma 10 elementów, co oznacza, że pierwszy ma index 0, drugi ma index 1 ... a ostatni ma index 9. Ty w linijkach 14, 29 i 39 odczytujesz (próbujesz odczytać) element o indexie 10, mimo że ostatni ma index 9, dlatego czytasz pamięć, która nie należy do tej tablicy (i prawdopodobnie też w ogóle nie do twojego programu) i właśnie dlatego masz naruszenie pamięci.
komentarz 1 grudnia 2019 przez PirchHD Obywatel (1,730 p.)
A jeśli chciałbym żeby funkcja zwracała nam całą tablice to mam napisać " return tab; "??
komentarz 1 grudnia 2019 przez PirchHD Obywatel (1,730 p.)
edycja 1 grudnia 2019 przez PirchHD

@JAKUBW,
 Dzieki za pomoc wystarczyło zmienić w 14 linijce  i zmieniłem wszędzie na return 0; . Tylko teraz mam problem że tablica nie zostaje wypisana :/ Nwm jak zrobić by tab[10][10] została wysłana do funkcji "WypiszTab"

komentarz 2 grudnia 2019 przez JAKUBW Nałogowiec (33,470 p.)
a po co ją wysyłać do tej funkcji? Ta funkcja ma do niej dostęp, gdyż tablica jest globalna.

Podobne pytania

0 głosów
0 odpowiedzi 221 wizyt
pytanie zadane 8 listopada 2019 w C i C++ przez niezalogowany
0 głosów
0 odpowiedzi 142 wizyt
pytanie zadane 19 lutego 2020 w Python przez Pico Obywatel (1,330 p.)
0 głosów
0 odpowiedzi 327 wizyt
pytanie zadane 30 czerwca 2020 w Systemy operacyjne, programy przez Chochołek Nowicjusz (120 p.)

92,572 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...