Its simple
void main()
{
int *arr[10];
arr=(int*)malloc(sizeof(int)*10);
......
......
......
......
free(arr);
}
congugative memory allocation ,is use to array
congugative memory allocation ,is use to array
A reallocation. Note that whenever we reallocate an array, we increase the size of the current allocation if there is sufficient free memory beyond the current allocation or we allocate entirely new memory if there isn't. But when we reduce the size of an array, we simply release the redundant memory at the end of the array; we never allocate new memory. However, because the amount of memory being allocated has to either increase or reduce in size, both are termed a reallocation.
Dynamic memory allocation is at runtime. static memory allocation is before run time, but the values of variables may be changed at run time. Static memory allocation saves running time, but can't be possible in all cases. Dynamic memory allocation stores it's memory on heap, and the static memory allocation stores it's data in the "data segment" of the memory.
Contiguous means to share an edge or boundary, touching, adjacent, neighbouring and so on. Thus contiguous storage allocation is any allocation that consumes two or more contiguous storage elements. In the case of contiguous memory allocation, this means two or more contiguous memory addresses are allocated. A one-dimensional array is an example of a contiguous memory allocation, where one array element (a data type) is immediately followed by the next.
Contiguous means to share an edge or boundary, touching, adjacent, neighbouring and so on. Thus contiguous storage allocation is any allocation that consumes two or more contiguous storage elements. In the case of contiguous memory allocation, this means two or more contiguous memory addresses are allocated. A one-dimensional array is an example of a contiguous memory allocation, where one array element (a data type) is immediately followed by the next.
A one-dimensional array is always represented as a single contiguous block of memory. The size of the allocation is determined by the array's type and the number of elements of that type. For instance, if you create an array of 10 elements where each element is 4 bytes in length, the total allocation will be 40 bytes. The array name is a reference to the start of the allocation and individual elements are accessed via an indexed offset from this reference, such that the first element is at offset 0, the next is at offset 1, and so on.
Arrays are the cheapest data structures, without much overhead compare to other data structures. Basically in array, we have four types i.e1. Static array - array size known at compile time.// example code snippet:char array[10];2. Dynamic array - array size known at begging of execution time.//example code snippet:char *array;int num_elements;//Dynamic memory allocation using malloc library call which in turn uses "brk" // or "sbrk" system call under unixarray = (char *)malloc (num_elements * sizeof(char));3. Stretchable array- array size can be stretched(modified) during execution time.//example code snippet.char *array;int num_elements;array = (char *)malloc (num_elements * sizeof(char));//Modify the memory allocation during execution time using realloc library callarray = realloc (array, new_value);4. Tunable array- array size known at link time.Suppose consider you have one object file called sample.o(compiled sample.c)and header file called sample.h.ISV's (Independent software vendors) usually won't provide you the source code(In case of proprietary software), instead they will provide you the object file and one corresponding header file which contains some symbolic literals (some # define constants). so that you can change the symbolic literals in header file which takes necessary action when you compile both file together.//example snippet code:In sample.cchar arr[MAX_SIZE];In sample.h# define MAX_SIZESuppose now if you change the symbolic literal "MAX_SIZE"in header file sample.h that will affect the size of the array arr at link time.Basically static array's are fall under the category of "Static Memory allocation" and remaining all will fall under "Dynamic Memory allocation".
A linked list implemented with an array defeats the purpose of using a linked list, which is to address the memory allocation problems associated with arrays.
in java the memory allocation can be dynamic in nature. The java array enables the user to store values of the same type in contiguous memory allocations. Arrays are always a fixed length abstracted data structure which can not be altered when required.
There is no null array as such. However, a pointer to an array may be nullified (pointing to zero) before memory is allocated to it, or after that memory is released. But the same is true of any pointer. That is, the pointer is NULL, not what it previously pointed to. An empty array usually refers to a dynamic array for which no memory has yet been allocated (in other words, a null pointer). However, the term can also apply to static arrays or dynamic arrays that have been allocated memory, where every element is initialised with a value that has no significance. For instance, an array of natural numbers (positive integers greater than 0) might be initialised with the value 0 (a non-natural number) in every element to indicate that the array is empty. By contrast, individual elements could be set to zero to indicate which elements are available (an empty element as opposed to an empty array).
The following function demonstrates a dynamic array of integers. The array is dynamically allocated a random number of elements, from 1 to 100, with pointer p pointing at the start address (&p[0]). Note that the number of elements needn't be random, but unlike a static array which has a constant size and can therefore be allocated in the data segment by the compiler, the number of elements in a dynamic array is not known in advance and must therefore be allocated on the free store at runtime. The number of elements is variable. #include <iostream> #include <time.h> int main() { srand(( unsigned ) time( NULL )); int elements = rand() % 100 + 1; int * p = new int[elements]; // do something with array... // p[0] will return the first element // p[elements-1] returns the last element. delete [] p; // release memory. p = NULL; return( 0 ); }