malloc 2d array cpp
Certainly! Here's an example of allocating memory for a 2D array in C++ using malloc
, along with explanations for each step:
#include <iostream>
#include <cstdlib>
int main() {
int rows = 3;
int cols = 4;
// Step 1: Allocate memory for row pointers
int matrix = (int)malloc(rows sizeof(int));
// Step 2: Allocate memory for each row
for (int i = 0; i < rows; ++i) {
matrix[i] = (int)malloc(cols sizeof(int));
}
// Step 3: Initialize values (optional)
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
matrix[i][j] = i * cols + j;
}
}
// Step 4: Access and use the 2D array
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
std::cout << matrix[i][j] << " ";
}
std::cout << std::endl;
}
// Step 5: Free allocated memory
for (int i = 0; i < rows; ++i) {
free(matrix[i]);
}
free(matrix);
return 0;
}
Explanation:
1. Include necessary headers for input/output and memory allocation (<iostream>
and <cstdlib>
).
2. Define the number of rows and columns for the 2D array (rows = 3
and cols = 4
).
3. Allocate memory for storing row pointers using malloc
. matrix
is a pointer to pointers to integers (int
).
4. Use a loop to allocate memory for each row using malloc
.
5. Optionally, initialize the values in the 2D array.
6. Access and utilize the 2D array using nested loops.
7. Free the allocated memory for each row and then for the row pointers using free
to prevent memory leaks.