どうも動作がむちゃくちゃおかしいので、一応確認しておきたいのですが

typedef struct{
 char* txt[16];
}TS, *LPTS;

void testcode( void ){
 TS ts;
 char* smptxt = "abcdefghijklmn";
 ts.txt[0] = smptxt;
 ts.txt[1] = smptxt;
 ts.txt[2] = smptxt;
}

みたいなコードで、ts.txt[0]への代入後、どうもts.txt[1]以降の内容も変化
変化した内容は[1]が0x68676665、[2]が0x6c6b6a69とのことなので、
どうやらsmptxtの文字列が突っ込まれているようです
VC++2003の問題だとは思うのですが、もしかして何か俺の方でやっちゃってます?