KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
The code works as it is supposed to, though it never frees the memory allocated by malloc() . I have tried to free memory in any place that I can, but no matter where I do it, it breaks the program. Specifically, I get a "double free or corruption error." This is more of a question as to what free() and malloc() actually do? All of the problems with free are in the main: int main(int argc, char *argv[]){ if(argc!=2){ exit(1); } printf("CSA WC version 1.0\n\n"); int length = strlen(argv[argc-1]); char file_to_open[length]; strcpy(file_to_open, argv[argc-1]); //printf("filename:%s\n",file_to_open); //create counters for output int count_number_of_lines = 0; int count_number_of_words = 0; int count_number_of_characters = 0; //create int size of default array size int current_array_size = pre_read(file_to_open); //printf("number of lines: %i\n",current_array_size); //create string array of default size char *strings_array[current_array_size]; //create a pointer to catch incoming strings char *incoming_string=NULL; int done=0; while(done==0){ incoming_string=get_line_from_file(file_to_open, count_number_of_lines); if(incoming_string!=NULL){ incoming_string=csestrcpy2(incoming_string); //printf("incoming line: %s\n",incoming_string); strings_array[count_number_of_lines]=(char*)malloc(strlen(incoming_string+1)); strings_array[count_number_of_lines]=csestrcpy2(incoming_string); //printf("added to array:%s\n",strings_array[count_number_of_lines]); count_number_of_lines++; count_number_of_characters=(count_number_of_characters+(strlen(incoming_string)-1)); } else{ done=1; } } //all data is stored in a properly sized array //count all words in array int count=0; int word_count=0; char *readline; while(count<current_array_size){ readline = csestrcpy2(strings_array[count]); printf("line being checked: %s"
Tags (comma-separated)
Save Edits
Cancel