初学C++所遇到的问题
工具:Dev C++
1. 调试不显示调试窗口
调试后无调试信息,点击yes就直接崩溃
解决方法:
- 工具-编译选项-代码生成/优化-连接器-产生调试信息(改成yes);
- 工具-环境变量-浏览debug变量(下边的查看指针指向变量打钩);
2. 编译器运行结果不相同
#include <stdio.h>
#include <string.h>
int main(int argc, char const *argv[])
{
char s1[] = "abc";
char s2[] = "Abc";
printf("%d\n", strcmp(s1, s2));
printf("%d\n", 'a' - 'A');
return 0;
}
在我的编译器里面strcmp输出的是1
网页编译器输出32,以及老师的编译器也是输出32
原因:我猜是编译器不同导致的
解决方法:目前还不知道,先记录下来,之后再解决
3.关于malloc与free
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char const *argv[])
{
char s[] = "hello";
char *p = strchr(s,'l');
char *t = (char*)malloc(strlen(p)+1);
strcpy(t,p);
printf("%s\n", p);
printf("%s\n", t);
free(t);
char c = *p;
*p = '\0';
char *q = (char*)malloc(strlen(s)+1);
strcpy(q,s);
printf("%s\n", q);
printf("%s\n", t);
// 这里一样的 ?? free(t) 写在下面就会是llo,为什么?
free(q);
return 0;
先后free(t),导致最终的输出结果不一样,先释放的话程序输出he,后释放的话就是llo