代码改变世界

随笔分类 -  编程语言之c

C/C++ extended python时一种常见的内存泄漏

2012-06-29 00:13 by OCaml, 1283 阅读, 收藏,
摘要: 比如像这样的代码:PyObject *dic = PyDict_New();iret = PyDict_SetItem(dic, Py_BuildValue("s","xxxxxx"),Py_BuildValue("s"), "Hello xxxx");这样就会出现内存泄漏!正确的写法应该是这样:PyObject *dic = PyDict_New();PyObject *obj1 = Py_BuildValue("s","xxxxxx");PyObject *obj2 = 阅读全文

c sizeof

2010-12-05 22:17 by OCaml, 271 阅读, 收藏,
摘要: 1、sizeof到底是什么:sizeof是一元运算符(Unary operator) 语法规则如下:sizeof unary-expressionsizeof ( type-name )2、sizeof与结构体和联合体:struct test {char c;int a;double d;};当时我认为所占的空间是:13(这个结果肯定是不对的!)。其实用sizeof算出来的值是:16(微软的编译器、gcc的结果)这里面存在着一个内存对齐的问题:我要弄清楚的就是为什么要对齐、怎么对齐。3、sizeof的返回值:这是个让我心痛到永远的问题。因为我犯过错在这个问题上!#include<stdi 阅读全文

C语言的声明

2010-12-05 22:09 by OCaml, 252 阅读, 收藏,
摘要: 最近在恶补C语言,有时候感觉c语言的声明是真的复杂。关于结构:关于联合:关于枚举:一个简单c语言声明分析程序:设计思想:我们从左向右读取,把各个标识符依次压入栈中,直到读到第一个标识符为止。然后我们继续向右读如一个标记。也就是标识符右边那个标记。接着观察左边的那个标记(是否需要从栈中弹出)。要包含的头文件:#include <stdio.h>#include <string.h>#include <ctype.h>#include <stdlib.h>定义两个宏一个是栈的大小,一个是字符串的长度:#define MAXTOKENS 100#def 阅读全文