char* 给CString 赋值。

按钮监听是这样的://TODO:分析文法inti,non_op_num=0;//算非终结符数目for(i=0;i<strlen(g_buffer);i++){if(g_b... 按钮监听是这样的:
// TODO:分析文法
int i,non_op_num=0;//算非终结符数目
for (i=0;i<strlen(g_buffer);i++)
{
if (g_buffer[i]=='>')
{
non_op_num++;
}
}
m_non_op=new char[non_op_num+1];
memset(m_non_op,0,non_op_num+1);
//文法分割
m_non_ter_op_len=non_op_num;
m_non_ter_op_g=new char*[m_non_ter_op_len];
for (i=0;i<m_non_ter_op_len;i++)
{
m_non_ter_op_g[i]=new char[32];
memset(m_non_ter_op_g[i],0,32);
}
int tp_index=0;
int tp_non_index=0;
for (i=0;i<strlen(g_buffer);i++)
{
if (g_buffer[i]=='>')
{
tp_index=i;
while(g_buffer[tp_index]!=13)
{
tp_index++;
}
memcpy(m_non_ter_op_g[tp_non_index],g_buffer+i+1,tp_index-i-1);
tp_non_index++;
}
}
//非终结符放入数组,放入界面字符串
int j=0;

for (i=0;i<strlen(g_buffer);i++)
{
if (g_buffer[i]=='>')
{
m_non_op[j]=g_buffer[i-1];
j++;
}
}
m_non_op[j]=0;
m_NON_TERMINAL_LIST=m_non_op;//到这里的时候就出错了。
运行的时候,有时是可以运行成功的,也有时候运行不成功。但是编译的时候,都会有异常,指针在使用的时候都进行初始化了。没有进行delete操作。
展开
 我来答
小北D19DNt
2014-07-13 · TA获得超过139个赞
知道答主
回答量:189
采纳率:50%
帮助的人:134万
展开全部
1. theStr是用地址传入的,会不会在dll的函数里面被修改?
2. theStr分配空间的时候没有清零
3. m_msg = theStr 用VC跟进去看看
4. 如果你没有定义UNICODE宏,那么CSTRING默认采用ANSI处理,你要确保你读到的是ANSI的字符串,否则,干脆就写UNICODE应用
追问
刚刚试过了,不是这个问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
WM_THU
2014-07-13 · TA获得超过7164个赞
知道大有可为答主
回答量:4285
采纳率:80%
帮助的人:3918万
展开全部

char* 给CString 赋值,在非Unicode下,最简单的做法实例:

char a[128] = "Hello World!";
CString str;
str.Format("%s", a);
追问
你觉得我在百度上面搜不到这个么?
问题已经解决了,堆泄露,十分隐蔽。
鉴于你的答案比较规范,给你加分,再接再厉。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式