Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Dynamiczne alokowanie pamieci wskaznikami

Ostatnio zmodyfikowano 2016-04-24 10:38
Autor Wiadomość
koniol
Temat założony przez niniejszego użytkownika
Dynamiczne alokowanie pamieci wskaznikami
» 2016-04-23 15:26:30
Witam jako że to mój pierwszy post to chciałbym się przywitać z wszystkimi.

Dopiero zaczynam przygode z C++ i mam ot taki błąd  munmap_chunk(): invalid pointer
co robie nie tak
C/C++
#include <cstdlib>
#include <iostream>
#include <string>

using namespace std;

int main( int argc, char ** argv ) {
   
    int * tablica;
    int ile = 9;
    tablica = new int[ ile ];
   
    for( int i = 0; i < ile; i++ ) {
        * tablica += i;
        tablica++;
        cout << * tablica;
    }
    delete[] tablica;
   
    return 0;
}
 
P-147560
BadBullPL
» 2016-04-23 15:37:59
delete
 musi otrzymać to co zwróciło
new
, a nie przesunięty o ileś tam wskaźnik. Utwórz dodatkowy wskaźnik, który będzie wskazywał na tablice i go inkrementuj albo używaj operatora
[]
P-147561
carlosmay
» 2016-04-24 10:38:14
C/C++
tablica = tablica - ile; // cofnięcie wskaźnika na początak tablicy, czyli o ile przesuwaliśmy w pętli
delete[] tablica;

Przykład do analizy:
C/C++
{
    int ile;
    std::cin >> ile;
    int * ptab = new int[ ile ] { };
   
    for( int i = 0; i < ile; ++i ) {
        *( ptab + i ) = i + 1;
    }
   
    for( int i = 0; i < ile; ++i ) {
        std::cout << *( ptab + i ) << std::endl;
    }
   
    for( int i = 0; i < ile; ++i ) {
        std::cout << *( ptab++ ) << std::endl;
    }
    ptab = ptab - ile;
    for( int i = 0; i < ile; ++i ) {
        std::cout << ptab[ i ] << std::endl;
    }
   
   
    delete[] ptab;
}
P-147581
« 1 »
  Strona 1 z 1