a stack smashing is detected in my main function in a c++ code... here is the body of main:
int main()
{
long int acn;
char dot[15];
float open_balance=1;
char k;
int total_account=0;
int c;
static int ac=10000;
TRANSACTION trn;
support sprt;
do{
cout<<"\n1.New account\n2. Transaction\n3. Exit\n\nEnter choice:";
cin>>k;
switch(k) {
case '1':
ac+=1;
time_t rawtime;
time(&rawtime);
strcpy(dot,ctime(&rawtime));
do{
if(open_balance<=0)
cout<<"Opening BALANCE can not be less than zero";
cout<<"\nEnter the opening balance :";
cin>>open_balance;
}while(open_balance<=0);
bln[total_account].get_data(ac,open_balance,dot);
++total_account;
break;
case '2':
trn.trans(total_account);
break;
case '3': break;
default :
cout<<"\nWrong choice!!";
}
}while(k!='3');
cout<<"Thank you";
return(0);
}
When i run the code through valgrind it also finds the stack smashing but can't find any memory leak. valgrind report:
1.New account 2. Transaction 3. Exit
Enter choice:3 * stack smashing detected *: ./a.out terminated Thank you==9813==
==9813== HEAP SUMMARY:
==9813== in use at exit: 0 bytes in 0 blocks
==9813== total heap usage: 10 allocs, 10 frees, 954 bytes allocated
==9813==
==9813== All heap blocks were freed -- no leaks are possible
==9813==
==9813== For counts of detected and suppressed errors, rerun with: -v
==9813== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) Aborted (core dumped)
Where am i going wrong?