?
Solved

Is there a memory leak in this code?

Posted on 2005-04-15
2
Medium Priority
?
285 Views
Last Modified: 2010-04-15
Can someone point me in the right direction and tell me what is wrong here? I keep getting a funny paragraph symbol at the end of my output...

#include <stdio.h>
#include <system.h>
#include <stdlib.h>

//prototypes
char DisplayTitle(void);
void GetNumbers(int *parrNumb);
int FindMax(int *parrNumb);
int FindMin(int *parrNumb);
void DisplayNumbers(int min, int max);

int main(void)
{
  char quitNow='a';   /* to determine if uer wants to quit */
  int min=0;       /* minimum number in array */
  int max=0;       /* maximum number in array */
  int arrNumb[10]; /* user input into array   */
  int *parrNumb;   /* pointer to array */
  int i=0;         /* used as a counter in array */
 
  for (i=0; i<10; i++) /* initialize array to 0's */
      arrNumb[i] = 0;
     
  //display the title of the program
  quitNow = DisplayTitle();
   
  if (quitNow=='Q' || quitNow=='q')
  {
     return 0;
  }
   
  //Get all 10 numbers from user
  GetNumbers(arrNumb[10]);
       
  //Find minimum number in array
  min = FindMin(arrNumb[10]);
  free(parrNumb);
       
  //Find maximum number in array
  max = FindMax(arrNumb[10]);  
 
  //display the output
  DisplayNumbers(min, max);
  fflush(stdin);
  printf("\nPress any key to end.");
  getche();  
 
  return 0;
}

/* DisplayTitle Function
   Input  : Non
   Process: Displays Title and Instructions
   Output : None
*/
char DisplayTitle(void)
{
    char quitNow; /* does user want to exit program */

    clrscr();
    printf("Array Program\n");
    printf("-----------------------------------------------------------------\n");
    printf("Application will ask for 10 numbers and then return the largest\nand smallest numbers.\n");
    printf("Enter (Q) to Quit Application or press any other key to continue.\n");
    printf("-----------------------------------------------------------------\n");
    scanf("%c",&quitNow);
    fflush(stdin);
    return quitNow;
}


/* GetNumbers Function
   Input  : Array of integers
   Process: Get user's input (up to 10 times)
   Output : None. Values returned through pointer
*/
void GetNumbers(int *parrNumb)
{
    int getnumb=0;    /* user choice from menu passed to main */
    int count;  /* used to determine when 10 numbers added */

    for(count=0;count<10;count++)
    {
        printf("Please enter a number.\n");
        scanf("%d",parrNumb);
        fflush(stdin);                     
         //printf("GetNumber is : %d\n",*parrNumb);
         //printf("INDEX IS %i\n",count);
         
         *parrNumb++;       
         
         getnumb=0; /*reinitialize*/
         
    }
 
}


/* FindMax Function
   Input  : Pointer to array
   Process: Finds maximum number in array
   Output : Returns maximum number
*/
int FindMax(int *parrNumb)
{
    int maxNumb=0; /* used to store maximum number of array */
    int i=0;       /* used as a counter for the array */

    maxNumb = *parrNumb;

    for (i=1; i<10; i++) /* initialize array to 0's */
    {
      *parrNumb++; /* go to next index */
      
        if (*parrNumb>maxNumb)
        {
           maxNumb = *parrNumb;
      }
      
    }

    return maxNumb;
}


/* FindMin Function
   Input  : Pointer to array
   Process: Finds minimum number in array
   Output : Returns minimum number
*/
int FindMin(int *parrNumb)
{
    int minNumb=0; /* used to store minimum number of array */
    int i=0;       /* used as a counter for the array */

    minNumb = *parrNumb; /* assign first index to minNumb */
   
    for (i=1; i<10; i++) /* initialize array to 0's */
    {
      *parrNumb++; /* go to next index */
      
        if (*parrNumb<minNumb)
        {
           minNumb = *parrNumb;
      }
      
    }

    return minNumb;
}


/* DisplayNumbers Function
   Input  : Minimum number in array and maximum number in array
   Process: Displays minimum and maximum numbers
   Output : None
*/
void DisplayNumbers(int min, int max)
{
    //clrscr();
    printf("\nThe minimum number in the array is %i.",min);
    printf("\nThe maximum number in the array is %i.",max);  
}
0
Comment
Question by:mathew_s
2 Comments
 
LVL 22

Accepted Solution

by:
grg99 earned 200 total points
ID: 13795443
>    *parrNumb++; /* go to next index */


This line doesnt make much sense-- it's going to increment the integer that parrNumb points to.  
You probably mean parrNumb++;   that steps the pointer to the next integer in the array.



>  GetNumbers(arrNumb[10]);   // and other lines passing in arrNumb[10]

I suspect you meant to pass in just arrNumb.   If you say arrNumb[10], you're passing in the address of the eleventh element of arrNumb, which is probably the wrong thing.
0
 
LVL 1

Author Comment

by:mathew_s
ID: 13795878
Thanks very much for your advice. Very helpful and informative.
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Have you thought about creating an iPhone application (app), but didn't even know where to get started? Here's how: ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Important pre-programming comments: I’ve never tri…
Examines three attack vectors, specifically, the different types of malware used in malicious attacks, web application attacks, and finally, network based attacks.  Concludes by examining the means of securing and protecting critical systems and inf…
The goal of this video is to provide viewers with basic examples to understand recursion in the C programming language.
The goal of this video is to provide viewers with basic examples to understand and use conditional statements in the C programming language.
Suggested Courses

830 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question