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

Problem z Wskaźnikiem (rezerwowanie szufladek)

Object Storage Arubacloud
0 głosów
275 wizyt
pytanie zadane 23 grudnia 2021 w C i C++ przez Elmund Nowicjusz (170 p.)

Witam,

Mam problem  z rezerwacja szufladek, przy wpisaniu liczby szufladek, które program ma za zadanie zarezerwować i wyświetlić czas na wykorzystanie tej pamięci przy wpisaniu liczby np. 10000 zostaje wyświetlony czas dwoch sposob : bez wskaznika i z wskaznikiem. Gdy wpisuje np. 1000000 juz wyświetla tylko czas dla bez wskaznika po czym pogram się konczy. Czy popełniłem w kodzie jakiś błąd?

#include <iostream>
#include <time.h>
#include <cstdlib>


using namespace std;

int ile;

clock_t start, stop;

double czas;

int main()
{
    cout<<"Ile liczba w tablicy: ";
    cin>>ile;

    int *tablica;
    tablica=new int [ile];

    start=clock();


    for(int i=0; i<ile; i++)
    {
        tablica[i]=i;
        tablica[i]+=50;
    }
    stop=clock();

    czas=(double)(stop-start)/CLOCKS_PER_SEC;
    cout<<"Czas zapisu (bez wskaznika): "<<czas<<endl;

    delete [] tablica;

    int *wskaznik=tablica;
    tablica=new  int [ile];

    start=clock();
    for(int i=0; i<ile; i++)
    {
        *wskaznik=i;
        *wskaznik+=50;
        wskaznik++;
    }
    stop=clock();

    czas=(double)(stop-start)/CLOCKS_PER_SEC;
    cout<<"Czas zapisu (ze wskaznikiem): "<<czas<<endl;

    delete [] tablica;

    return 0;
}

 

komentarz 23 grudnia 2021 przez Wiciorny Ekspert (270,110 p.)

1000000  wartośc 

jest za dużo dla typu int, stąd brakuje pamięci i program się wiesza 
Operujesz na wskaźnikach, które są adresowane do pamięci więc jeśli ją przekroczysz to generalnie program przestanie działąć - o ile nie zwróci błędu 

2
komentarz 23 grudnia 2021 przez tkz Nałogowiec (42,000 p.)

Nie w tym tkwi problem, a w braku zrozumienia wskaźników i błędzie autora kursu. Do OP'a, zamień 37 linię z 38.

jest za dużo dla typu int, stąd brakuje pamięci i program się wiesza 
Operujesz na wskaźnikach, które są adresowane do pamięci więc jeśli ją przekroczysz to generalnie program przestanie działąć - o ile nie zwróci błędu 

Milion dla inta to jakieś 4 tysiące za mało by go przekroczyć, przy założeniu działania na 32 bitowej maszynie. Alokując dynamicznie nie masz ograniczeń, co do ilośći pamięci. Oczywiście ogranicza Cię fizyczna ilość pamięci. 

Nie przekroczysz... Genrealnie adresów masz 2^49 bodajżę, nie ma fizycznej opcji by to przekroczyć. Jeżeli myślałeś o stosie to jak najbardziej. 

komentarz 23 grudnia 2021 przez Whiskey_Taster Pasjonat (15,610 p.)
Tak jest, to błąd w kodzie. Wydaje mi się, że nawet na tym forum widziałem identyczny kod z tym samym błędem.
komentarz 26 grudnia 2021 przez Wiciorny Ekspert (270,110 p.)

@tkz, no generalnie w Javie nie co inaczej jest i na wraperze to by się mogło zdarzyć. Dzięki za wyjaśnienie :) dlatego, nie pisałem tego jak odpowiedź bardziej jako pomysł. 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 488 wizyt
pytanie zadane 11 grudnia 2016 w C i C++ przez qlucha Obywatel (1,790 p.)
+1 głos
0 odpowiedzi 259 wizyt
pytanie zadane 29 października 2021 w C i C++ przez MKolaj15 Bywalec (2,270 p.)
0 głosów
2 odpowiedzi 290 wizyt

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 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!

...