Just been looking over Dynamic Memory Allocation, using new.

Heres a snippet of the code i've got.

vertices = new float *[v];
	for (i = 0; i < v; ++i)
	{
		vertices[i] = new float[3];
	}

what i was thinking was could i just do

vertices = new float[v][3];

instead of the for loop, are there any benefits for using either or are they exactly the same.

thanks in advance :)

finally one other minor question, currently all of my classes are in the same .cpp file as my main function, is there a way to put the classes into seperate .cpp files rather like java. i tried this initially but got errors about my code, and after moving them into the same file the program ran perfectly.

- Matt

Recommended Answers

All 2 Replies

Well if you declare the pointer the right way, then yes you can allocate the whole 2D array in one step. float (*vertices)[3]; But this only works when all the minor dimensions are constants.

BTW - Use std::vector in C++.

what i was thinking was could i just do

vertices = new float[v][3];

this one only works if the "3" part is a constant, and always creates a "rectangular" array made of contiguous parts, no pointers involved

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.