How do you figure out how objects are aligned on a particular implementation?

Code:
#include <iostream>
using namespace std;

int main() {

  char* pc = 0;
  int* pi = 0;
  void* pv = 0;

  cout << "Address of pc and pc+1: " << &pc << ", " << &pc+1 << '\n';
  cout << "Address of pi and pi+1: " << &pi << ", " << &pi+1 << '\n';
  cout << "Address of pv and pv+1: " << &pv << ", " << &pv+1 << '\n';
}
The addresses are different whenever the program is run (not surprising). But how would you determine if, say, the machine always aligns a char* object on an "even" (like 0x0ffff0b4) instead of an "odd" (like 0x0ffff0b5)? Running the program several times gives a convincing, but not definite, answer. How can you tell for sure?