int *nr = new int[0]
-
int *nr = new int[0];
Hat das sinn??? Auf was zeigt nr jetzt??? Muss man das freigeben???
-
<hier stand blödsinn>
-
Es ging ihm wohl weniger um das new sondern eher um die 0.
-
interpreter schrieb:
Es ging ihm wohl weniger um das new sondern eher um die 0.
jo, schon gemerkt.
-
kingruedi schrieb:
interpreter schrieb:
Es ging ihm wohl weniger um das new sondern eher um die 0.
jo, schon gemerkt.
-
so, bin etwas müde, und hab was getestet, nunja der code is nur intressant, wenn ihr wissen wollt, was für ein scheiss mir einfällt, wenn ich müde bin, das ergebnis is aber eindeutig:
class alloctest{ static unsigned int size; static unsigned int position; static char* pointer; public: static void allocate(unsigned int newSize){ realloc(pointer,newSize); } static void* getinsertpos(unsigned int neededSize){ if(size<neededSize+position) allocate(size+neededSize); char* temp=pointer; temp+=position; position+neededSize; return temp; } }; unsigned int alloctest::size=0; unsigned int alloctest::position=0; char* alloctest::pointer=0; void * operator new[](size_t Type_size){ std::cout<<Type_size; return alloctest::getinsertpos(Type_size); } #pragma argsused int main(int argc, char* argv[]) { int *nr = new int[0]; delete[] nr; int *nr = new int[1]; delete[] nr; return 0; }
das erste gibt 0, das 2. 4 aus der code darüber is eigentlich absolut unintressant^^
-
@otze
ja, ist doch logisch. Das Argument an new[] entwpricht eben sizeof(T)*n
-
und was 0 ist, dass muss man nicht freigeben, weil es nichts freizugeben gibt
-
newvet schrieb:
Hat das sinn???
Nein.
newvet schrieb:
Auf was zeigt nr jetzt???
Auf Speicher, wo dir 0 Byte davon gehören.
newvet schrieb:
Muss man das freigeben???
Ja.