C++全局结构体变量赋值,读取时不一致

最近遇到一个问题,在对全局的结构体变量进行赋值之后,再读取其中内容的时候发现在Debug下是正常的,在Release下不正常。
下面这个代码是可以重现这个问题的:一个全局的结构体变量,在主函数中对它进行赋值,然后打印出来结构,发现和赋值不一致,并且在Debug和Release下的结果不一致。
代码:
// Struct.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include

using namespace std;

struct MyStruct
{
int a;
int b;
int c;
char* ca;
char* cb;
char* cc;
}st;
int main(int argc, _TCHAR* argv[])
{
//MyStruct st;
st.a = 1;
st.b = 2;
st.c = 3;
st.ca = "ca";
st.cb = "cb";
st.cc = "cc";
printf("a: %d; b: %d; c %d: ; ca : %c; cb : %c; cc : %c;", st.a, st.b, st.c, st.ca, st.cb, st.cc);

getchar();
return 0;

}

Debug下结果:

图片说明

Release:

图片说明

https://q.cnblogs.com/q/82918/

你的这个明显就是语法错误,我再vs2013上运行你的程序,首先是我没修改时,分别在debug和release两种模式下的运行结果:
Debug:
图片说明
Release:
图片说明

下面是我对你的代码做了一点修改,主函数的那些参数是没关系的,只是我们建立的工程种类不同

 #include<iostream>
using namespace std;
struct MyStruct
{
    int a;
    int b;
    int c;
    char* ca;
    char* cb;
    char* cc;
}st;
int main()
{
    //MyStruct st;
    st.a = 1;
    st.b = 2;
    st.c = 3;
    st.ca = "ca";
    st.cb = "cb";
    st.cc = "cc";
    //未修改
    //printf("a: %d; b: %d; c %d: ; ca : %c; cb : %c; cc : %c;", st.a, st.b, st.c, st.ca, st.cb, st.cc);
    //修改后,你要知道c语言中输出字符数组是如何输出的
    printf("a: %d; b: %d; c %d: ; ca : %s; cb : %s; cc : %s;", st.a, st.b, st.c, st.ca, st.cb, st.cc);
    getchar();
    return 0;
}

Debug下:
图片说明
Release下:
图片说明