What is happening between the two comments labeled POINT A and POINT B? Write a brief description at the bottom of your lab3/lab3.txt file. What happens if you compile the code and run it without any command line arguments? Explain what happens and why at the bottom of your lab3/lab3.txt file. Update the code to include a check after the call to malloc to verify that memory was successfully allocated (and call exit(0) if it was not). Rewrite the code between the two comments labeled POINT A and POINT B to use realloc. Include a check to verify that memory was successfully allocated as you did with malloc in the previous step. #include #include #include void print_int_array(int* a, unsigned size, char* name) { for (unsigned i=0; iinitial_size int new_size = atoi(argv[2]); // POINT A int *bigger = (int *) calloc(new_size,sizeof(int)); for (int i=0; i
omputer Science
-
What is happening between the two comments labeled POINT A and POINT B? Write a brief description at the bottom of your lab3/lab3.txt file.
-
What happens if you compile the code and run it without any command line arguments? Explain what happens and why at the bottom of your lab3/lab3.txt file.
-
Update the code to include a check after the call to malloc to verify that memory was successfully allocated (and call exit(0) if it was not).
Rewrite the code between the two comments labeled POINT A and POINT B to use realloc. Include a check to verify that memory was successfully allocated as you did with malloc in the previous step.
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
void print_int_array(int* a, unsigned size, char* name) {
for (unsigned i=0; i<size; i++) {
printf("%s[%d]=%d\n",name,i,a[i]);
}
}
int main(int argn, char *argv[]) {
// pretend initial_size came from user input (ie. not known ahead of time)
int initial_size = atoi(argv[1]);
int *array = (int *) malloc(initial_size*sizeof(int));
for (int i=0; i<initial_size; i++) {
array[i]=i;
}
printf("original:\n");
print_int_array(array,initial_size,"array");
// pretend new_size came from user input, assume new_size>initial_size
int new_size = atoi(argv[2]);
// POINT A
int *bigger = (int *) calloc(new_size,sizeof(int));
for (int i=0; i<initial_size; i++) {
bigger[i]=array[i];
}
int *tmp = array;
array = bigger;
bigger = tmp;
free(bigger);
// POINT B
for (int i=initial_size; i<new_size; i++) {
array[i]=2*i;
}
printf("resized:\n");
print_int_array(array,new_size,"array");
free(array);
}
Step by step
Solved in 3 steps