C/C++语法随记
ciengwu
这个作者很懒,什么都没留下…
展开
-
Linux下无return造成的C++程序崩溃
在linux下运行编译好的C++程序时,发现必然崩溃在一个成员函数的入口处,且此成员函数所属的对象指针打印出来后地址异常,类似于0X00008之类的。在某个成员函数声明有返回值,实际实现时,函数体内部没有return,导致函数无法跳出,或直接跳到了一个未知的地方,出现调用堆栈错误。对有返回值得函数,一定要有return,如果编译未报错,或忽视了编译警告,将存在隐患。原创 2024-01-04 19:29:03 · 653 阅读 · 1 评论 -
extern略记
C/C++中extern关键字有三处用法:1)extern "C":声明之后的函数为C语言函数,而非C++函数,用于C/C++混用的程序中;例1:extern "C"{//编译器在翻译以下两个函数名时会按照C语言的方式进行,以便在链接时能够找到对应的C函数void fun1(int a);void fun2(char c);}2)extern 变量:即告原创 2017-05-21 20:18:06 · 212 阅读 · 0 评论 -
使用volatile
多线程在通过全局变量进行通信时,此全局变量应该声明为volatile类型,若不这样做,很有可能debug能正常运行,但是release版不会按照程序的本意运行,因为release版会做一些优化,有些变量并不会及时地写入内存中,而是会一直存在于寄存器中,这样其它需要读取此变量值得线程就不会得到最新的变量的,从而导致这样的全局变量起不到通信的作用。原创 2017-08-07 20:54:35 · 177 阅读 · 0 评论 -
C程序崩溃的常见原因
写完的C程序在运行时,若弹出系统的异常提示框,则显示程序崩掉了,常见的原因有如下2点:1)内存越界具体的代码形式可为数组下标越界和指针移动越界,在操作一个数组或是指针之前,要明确其边界范围,不应访问不属于系统分配的内存区域。2)指针为空即此时通过指针访问的内存地址为0,这个地址系统是不允许访问的,系统也不会分配地址为0的内存给程序,这属于一种特殊的内存越界行为。空指针常见于原创 2017-08-07 21:42:58 · 8250 阅读 · 0 评论 -
多线程访问同一函数
多个线程访问同一函数时,一般情况下是互不影响的,但是当函数中存在全局变量或是static静态变量时,各个线程会得到不确定的结果原创 2017-08-07 21:58:06 · 2542 阅读 · 0 评论