Click here to Skip to main content
15,887,746 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
GeneralRe: print input parameter values Pin
Hamid_RT2-Jul-08 18:16
Hamid_RT2-Jul-08 18:16 
GeneralRe: print input parameter values Pin
George_George6-Jul-08 3:12
George_George6-Jul-08 3:12 
QuestionCheck file in use Pin
Karismatic29-Jun-08 23:28
Karismatic29-Jun-08 23:28 
AnswerRe: Check file in use Pin
SandipG 29-Jun-08 23:31
SandipG 29-Jun-08 23:31 
GeneralRe: Check file in use Pin
Saurabh.Garg29-Jun-08 23:37
Saurabh.Garg29-Jun-08 23:37 
GeneralRe: Check file in use Pin
Karismatic29-Jun-08 23:42
Karismatic29-Jun-08 23:42 
GeneralRe: Check file in use Pin
SandipG 30-Jun-08 0:14
SandipG 30-Jun-08 0:14 
QuestionFunction pointer corrupts the stack or heap Pin
BadKarma29-Jun-08 22:55
BadKarma29-Jun-08 22:55 
Hi,

I have encountered this really strange bug. For a new project I have split a old, working class and its member class into two single classes (functional, wrapper).
When I use the same code that has worked for years, it crashes with heap or stack corruption. I have narrowed the bug to the use of a function pointer in the wrapper class to a member of the functional class. When i add this pointer as a member of the wrapper class, the corruption happenes i don't even have to call it.
This is the code that does the woe.
int _tmain(int argc, _TCHAR* argv[])
{
  functional oFun;

  {
    // this is to use the scope effect
    wrapper wrap(&oFun);  
  }
  
  return 0;
}

When exiting the stack is corrupted.
The is the code of the wrapper class
--wrapper.h--
#pragma once
class functional;
class wrapper
{
public:
  wrapper(functional* pFun);
  ~wrapper(void);
  
  void (functional::*pExitFunction)();	// the addition of this line causes the corruption
                                        // even if you don't use it in the cpp side
  functional* _pFun;
};

--wrapper.cpp--
#include "wrapper.h"
#include "functional.h"
wrapper::wrapper(functional* pFun)
{
  _pFun = pFun;
  
  pExitFunction = &functional::set_one;
}
wrapper::~wrapper(void)
{
  (_pFun->*pExitFunction)();
}

This is the code of the functional class
--functional.h--
#pragma once

class functional
{
public:
  functional(void);
  ~functional(void);
  void set_one();
  int _iData;
};

--functional.cpp--
#include "functional.h"

functional::functional(void)
{
  _iData = 0;
}

functional::~functional(void)
{
}

void functional::set_one()
{
  _iData = 1;
}


Why does the stack get corrupted?
I'm really stuck on this one, so any pointers would help me a lot.

Learn from the mistakes of others, you may not live long enough to make them all yourself.

AnswerRe: Function pointer corrupts the stack or heap Pin
Saurabh.Garg29-Jun-08 23:34
Saurabh.Garg29-Jun-08 23:34 
GeneralRe: Function pointer corrupts the stack or heap Pin
BadKarma29-Jun-08 23:49
BadKarma29-Jun-08 23:49 
GeneralRe: Pin
Saurabh.Garg30-Jun-08 0:00
Saurabh.Garg30-Jun-08 0:00 
GeneralRe: Pin
BadKarma30-Jun-08 1:13
BadKarma30-Jun-08 1:13 
GeneralRe: Pin
Saurabh.Garg30-Jun-08 3:31
Saurabh.Garg30-Jun-08 3:31 
Questionim upgrading from vs2003 to vs 2005 and the following code is creating a big error..... i wish anyone can help me fix the problem!! Pin
amit shrestha29-Jun-08 21:46
amit shrestha29-Jun-08 21:46 
AnswerRe: im upgrading from vs2003 to vs 2005 and the following code is creating a big error..... i wish anyone can help me fix the problem!! Pin
KarstenK29-Jun-08 21:56
mveKarstenK29-Jun-08 21:56 
AnswerRe: im upgrading from vs2003 to vs 2005 and the following code is creating a big error..... i wish anyone can help me fix the problem!! Pin
KarstenK29-Jun-08 22:37
mveKarstenK29-Jun-08 22:37 
QuestionCDialog::DoModal fails in a DLL Pin
sashoalm29-Jun-08 21:11
sashoalm29-Jun-08 21:11 
AnswerRe: CDialog::DoModal fails in a DLL PinPopular
Naveen29-Jun-08 21:15
Naveen29-Jun-08 21:15 
GeneralRe: CDialog::DoModal fails in a DLL Pin
sashoalm29-Jun-08 23:11
sashoalm29-Jun-08 23:11 
AnswerRe: CDialog::DoModal fails in a DLL Pin
Paresh Chitte29-Jun-08 21:38
Paresh Chitte29-Jun-08 21:38 
Questionvisual studio 6.0 to 2005 Pin
vibindia29-Jun-08 20:26
vibindia29-Jun-08 20:26 
AnswerRe: visual studio 6.0 to 2005 Pin
_AnsHUMAN_ 29-Jun-08 20:33
_AnsHUMAN_ 29-Jun-08 20:33 
GeneralRe: visual studio 6.0 to 2005 Pin
Nibu babu thomas29-Jun-08 22:09
Nibu babu thomas29-Jun-08 22:09 
GeneralRe: visual studio 6.0 to 2005 Pin
_AnsHUMAN_ 29-Jun-08 22:27
_AnsHUMAN_ 29-Jun-08 22:27 
QuestionRe: visual studio 6.0 to 2005 Pin
rp_suman29-Jun-08 20:44
rp_suman29-Jun-08 20:44 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.