What’s the difference between a stack and a heap?

They are both stored in the computer’s RAM (Random Access Memory)

Yes, an object can be stored on the stack. If you create an object inside a function without using the “new” operator then this will create and store the object on the stack, and not on the heap. Suppose we have a C++ class called Member, for which we want to create an object. We also have a function called somefunction( ). Here is what the code would look like: 

Code to create an object on the stack:

void somefunction( )
{
/* create an object "m" of class Member
    this will be put on the stack since the 
    "new" keyword is not used, and we are 
   creating the object inside a function
*/
  
  Member m;

} //the object "m" is destroyed once the function ends 
 
 
So, the object “m” is destroyed once the function has run to completion –
 or, in other words, when it “goes out of scope”.  The memory being used
 for the object “m” on the stack will be removed once the function is 
done running.
 

Code to create an object on the heap:

 
void somefunction( )
{
/* create an object "m" of class Member
    this will be put on the heap since the 
    "new" keyword is used, and we are 
   creating the object inside a function
*/
  
  Member* m = new Member( ) ;
  
  /* the object "m" must be deleted
      otherwise a memory leak occurs
  */

  delete m; 
} 
In the code above, you can see that the “m” object is created inside a 
function using the “new” keyword.  This means that “m” will be created 
on the heap.  But, since “m” is created using the “new” keyword, that 
also means that we must delete the “m” object on our own as well – 
otherwise we will end up with a memory leak.
 

Which is faster – the stack or the heap? And why?

The stack is much faster than the heap. This is because of the way that memory is allocated on the stack. Allocating memory on the stack is as simple as moving the stack pointer up.