New i delete

0

Jesli alokuje pamiec na string operatorem delete w nastepujacy sposob:

char * wsk=new char[15];

to jak kasuje taki wskaznik: delete []wsk czy delete wsk?
Tablice kasuje sie z " [] ", pojedyncze obiekty bez. Teb string jest traktowany jako tablica czy jako jeden obiekt? W symfonii Grebosz kasuje takie stringi bez " [] ", stad moje watpliwosci.

0

w c++ możesz bez

0

Przeciez new i delete sa tylko w c++!! I co teraz?

0

chyba musisz z [], bo sting to nic innego jak tablicca, no nie?
// no dobra po krotkiej wymianie zdan z flabrą( falbra'em?) doszedlem do wniosku ze nie musisz :P cytuje "bo to jest do tablicy ale obiektów"

// Ty tez mnie draniu tak nazywasz (modelarz LF jedzie mi zawsze od flabera) ? ;p ... new - 'class-specific array allocator' a zatem i delete[] bedzie sluzylo do wywolywania destruktorow w tablicy obiektow... Ale mozna rowniez tego uzywac do zwyklych tablic (np char*/int*/struct costam*), kompilator sam sobie zamieni (gdzies sie o tym doczytałem). [mf]

0

int* liczba = new int;
delete liczba;

int liczby[] = new int[15];
delete liczby[];

delete liczby; //(bez nawiasow kwadratowych) spowoduje usuniecie tylko pierwszego elementu tablicy

0

Jak to bywa z piekna teorią... Praktyka i tak pokaże :]

#include <alloc.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(){
  char* a;
  char  s[100];
  char* who[]={"ktos tu","flabra"};
  unsigned long d,c=(unsigned long)coreleft();
  int i=1024;
  while(i--){
    a=new char[1024];
    delete a;
  }
  d=(unsigned long)coreleft();

  strcat(strcpy(s,who[d!=c])," bzdurzy -1");
  printf("%s\n",s);

  c=(unsigned long)coreleft();
  i=1024;
  while(i--){
    a=new char[1024];
    delete[] a;
  }
  d=(unsigned long)coreleft();

  strcat(strcpy(s,who[d!=c])," bzdurzy -2");
  printf("%s\n",s);
}

// vixen - No Comment :>

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