use of constant in cuda is not accessed in the kernel

in the cuda code ,I am trying to use a structure and constant structure object and the value is assigned to constant object using cudaMemcpyToSymbol but this constant values are not accessed . I know the actual use of constant is not this way as each thread needs to access different values and cannot take advantage of memory broadcast to half warp but here in some situation I need this way.

#include <iostream>
#include <stdio.h>
#include <cuda.h>

using namespace std;

struct CDistance
{
	int Magnitude;
	int Direction;
};

__constant__ CDistance *c_daSTLDistance;
__global__ static void  CalcSTLDistance_Kernel(CDistance *m_daSTLDistance)
{
	int ID =  threadIdx.x;
	m_daSTLDistance[ID].Magnitude = m_daSTLDistance[ID].Magnitude + c_daSTLDistance[ID].Magnitude ;
	m_daSTLDistance[ID].Direction = 2 ;

	
} 

// main routine that executes on the host
int main(void)
{
  CDistance *m_haSTLDistance,*m_daSTLDistance;

m_haSTLDistance = new CDistance[10];
  for(int i=0;i<10;i++)
  {
	  m_haSTLDistance[i].Magnitude=3;
m_haSTLDistance[i].Direction=2;
  }
   //m_haSTLDistance =(CDistance*)malloc(100 * sizeof(CDistance));
  cudaMalloc((void**)&m_daSTLDistance,sizeof(CDistance)*10);
  cudaMemcpy(m_daSTLDistance,	m_haSTLDistance,sizeof(CDistance)*10, cudaMemcpyHostToDevice);
 cudaMemcpyToSymbol(c_daSTLDistance, m_haSTLDistance, sizeof(m_daSTLDistance)*10);
  CalcSTLDistance_Kernel<<< 1, 100 >>> (m_daSTLDistance);

cudaMemcpy(m_haSTLDistance,	m_daSTLDistance, sizeof(CDistance)*10, cudaMemcpyDeviceToHost);

  for (int i=0;i<10;i++){
	  cout<<m_haSTLDistance[i].Magnitude<<endl;
  }

free(m_haSTLDistance); 
  cudaFree(m_daSTLDistance);
}

here in the output, the constant c_daSTLDistance[ID].Magnitude is not accessed in the kernel and the statically assigned value 3 is obtained whereas I want this device value 3 is added to constant value and total 6 is returned.

while looking in to the cuda-memcheck it says error in read operation with memory out of bound as