First, a lot depends upon whether you are passing objects by reference or by value.
In C# and Java, you're always passing objects around by reference, but in C++, you can pass a copy of an object on the stack (i.e. pass-by-value). Doing this involves making a physical copy of the object in memory, which implies a pair of constructor/destructor calls (at least).
Passing an int can be done either by value or by reference. If you pass by value, you're copying an int type (let's say 32 bits) onto the stack. If you pass by pointer, you're copying an address (again, let's say 32 bits) onto the stack. There really isn't any difference in terms of stack usage. In the pass-by-reference case, the calling function will have to dereference the pointer to get access to the value of the int parameter, so there is going to be some additional code (and potentially reduced performance).
Passing an object (or struct) by value vs. reference is more interesting, because they may have very different memory footprints (depends upon the size of the class/struct).