最近遇到一个问题,在对全局的结构体变量进行赋值之后,再读取其中内容的时候发现在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;
}