misalignment of shared memory?

Is it possible for misalignment of shared memory?
I copy a uint4 from register to shared memory. But cuda-memcheck tell me it is misaligned.
I print the address of shared memory, and it is misaligned: 0x1000308

So two question:
is it possible to make shared memory aligned?
Does uint4 instruction can be applied to shared memory? ( I print the ptx code, it seems copy 4 values 4 times, from performance aspect is it faster?)

Is your shared memory allocated as a int4 array?

Could you post the entire message of cuda-memcheck?
You can also consult the cuda-memcheck user manual: http://docs.nvidia.com/cuda/cuda-memcheck/index.html

No, shared memory is defined as volatile shared int opposite_list[DEF_D2]

This is the code. If I uncomment the //((uint4 *)opposite_list)[id] = myvalue;
I will get an error. Unspecified error.

//((uint4 *)opposite_list)[id] = myvalue;
int base_id = id

Shared memory accesses (as well as all other types) need to be aligned to the access size. So if you are accessing a uint4, then the address needs to be 128-bit aligned. When you allocate shared memory, the compiler makes sure that it is aligned to the size of a single element. So I would suspect that the problem is happening because you declared the shared memory array with type ‘int’, which makes it 32-bit aligned, and then tried assigning a 128-bit value to it.