4D星宇

c++

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  57 随笔 :: 0 文章 :: 39 评论 :: 0 Trackbacks

#

posted @ 2008-04-14 10:49 bloodbao 阅读(142) | 评论 (0)编辑 收藏

                                 出现内存泄露
上周调程,出现一点点小麻烦,特此MARK!
一直都在防止程序出现内存泄露,由于太过认真,所以反而出现问题,得不到解决。
 CubeData* data=new CubeData();
 m_prop->PopulateWithCubeItems(data);
 cubedata_list.push_back(data);
//delete data;---->防止程序出现内存泄露,结果反而把数据提前删除,
由于用到了WXWIDGET和IRRLICHT的STRING结构,误以为两者的结构不兼容,结果调到半夜一两点。
经过一步步的跟踪才发觉是上述问题。
把它注释后没有BUG了,但出现内存泄露。
于是,在全局析构中,释放内存。问题解决。

EditDiag::~EditDiag()        
{
    
if(m_prop)
        delete m_prop;
    
//*防止内存泄露
    list
<CubeData*>::Iterator it = cubedata_list.begin();
    
for (; it != cubedata_list.end(); ++it)
    {

        delete (
*it);
    }
      //*/防止内存泄露


    m_mgr.UnInit();
}


 

posted @ 2008-04-14 10:31 bloodbao 阅读(139) | 评论 (0)编辑 收藏



以上是准备加入SCENEEDIT的内容:
posted @ 2008-04-08 16:56 bloodbao 阅读(276) | 评论 (0)编辑 收藏

                                                                                                   SceneEdit
挑战IrrEdit,作为一名IRRLICHT爱好者,我对IRREDIT非常得不满,它的功能少,且更新速度慢,没法子, 只好自已写一个。
初步有了个原型。等完成这个作品后,去找个工作。哎,没人要啊!
新更改的图如下,将增加水面,草地,树木以及ODE的支持。

posted @ 2008-04-02 11:33 bloodbao 阅读(367) | 评论 (3)编辑 收藏

>>> xxx = file('c:\\a.txt', 'r')
关键字的第一部分,是文件路径及名称。注意这里面,路径需要用\\
第二部分,是对文件的模式或者叫权限,一般有以下3种 "r" (read), "w" (write)和 "a"(append).

之后,就可以利用
xxx_content = infile.read()
xxx_content = infile.readlines()
来读取文件内容了
>>> xxx = file('c:\\a.txt', 'r')
>>> xxx_content = xxx.read()
>>> print xxx_content
This 
is line #1
This 
is line #2
This 
is line #3
END
>>> xxx.close()
>>>
>>> infile = file('c:\\a.txt', 'r')
>>> xxx = file('c:\\a.txt', 'r')
>>> for xxx_line in xxx.readlines():
        print 
'Line:', xxx_line        
Line: This is line #1
Line: This 
is line #2
Line: This 
is line #3
Line: 
END
>>> xxx.close()
>>> xxx=file('c:\\test.txt','w')
>>> xxx.write('billrice')
>>> xxx.write('testtest')
>>> xxx.write('enter\n')
>>> xxx.writelines(['billrice','ricerice'])
>>> xxx.close()
>>>
>>> xxx=file('c:\\test.txt','r')
>>> content=xxx.read()
>>> print content
billricetesttestenter
billricericerice
>>>


posted @ 2007-04-04 20:58 bloodbao 阅读(665) | 评论 (0)编辑 收藏

contact = {}
contact_list 
= []
while 1:
    contact[
'name'] = raw_input("please input name: ")
    contact['phone'] = raw_input("please input phone number: ")
    contact_list.append(contact.copy())
    go_on 
= raw_input("continue?\n")
    
if go_on == "yes":
        pass
    elif go_on 
== "no":
        break
    
else:
        print 
"you didn't say no\n"
= 1
for contact in contact_list:
    print 
"%d: name=%s" % (i, contact['name'])
    print "%d: phone=%s" % (i, contact['phone'])
    i = i + 1
首先是回忆一下字符串
字符串既能够用""也能够用''。然后是很有特色的%操作,起到格式化字符串的作用,前面仅仅在字符串中有一个%s,现在有%d和%s两个,分别代表插入十进制数值和字符串于%x标记的位置处。

然后是列表
列表是顺序的序列,用append在后面附加,也能构用索引值索引。所以我们完全可以用一个变量保存len(contact_list)得到的长度,然后一个个的遍历,不过这里展示了另外一种非常方便的方法。而且值得注意的是append()中的参数,我使用了contact.copy(),你可以尝试着把copy()给去掉,观察结果你就知道了所谓的append是怎么干的了,特别是你对指针之类的东西很有感觉的话(但是在Python中是没有指针这个概念的)

再来看看字典
字典是键(key)和值(value)的对应组合成的无序的序列。所以你存的时候要指明键(name或者phone),而且取的时候也是一样的。

接下来是判断
if是很好用的,==表示判断两个是否相等,=表示把右边的赋给左边的。而且可以直接判断字符串是否相等,这个太方便了,如果你曾经用过strcpy()的话,就知道了。elif是表示else if的意思,如果if不满足就判断elif的条件是否满足,最后是到else中去。

循环是个主体
while和for都是循环。不过这里while就没什么说的了,又是很经典的while 1,死循环,然后必须在里面用break来跳出。for和C中的for是不一样的,for in才是一个完整的语句,指的是从一个能够逐一取值的序列中(比如list),一个一个的取出值赋给for后面指定的变量中,直到取空,循环结束。其实回想一般用C中的for的经历,也大体如此。而且你还可以用for i in range(1,100)来指定一个范围从多少到多少。可以说for in充分体现了python的体贴周到,用起来很直观,不会绕弯。

接下来就是运行了,大家慢慢调试吧。下次可能是讲异常处理,因为我觉得在深入到使用各种高级的要素之前,先要学会怎么去处理异常。最常见的异常应该是input(),然后你给出的输入是一个无法转换为数字的字符串了,那么我们就要来处理它。
posted @ 2007-04-04 20:52 bloodbao 阅读(212) | 评论 (0)编辑 收藏

以前在XP下学习装过PYTHON,不过时间久了,很多东西都忘光了!
现在得重新再来,我的平台是DEBIAN ETCH+AMD 1G+256M:
安装python和其它软件:aptitude install python python-tk(enter)
第一个程序:
from Tkinter import *
root = Tk()
w = Label(root, text="Hello, world!")
w.pack()
root.mainloop()
------------------
还是解释一下
fromt Tkinter import *
是引入一个模块,这个模块用来创建GUI(Graphic User Interface)窗口
Tk()创建了一个主窗口
Label()创建一个标签
Label的第一个参数是root表明Label是在这个主窗口中的。
w.pack()是指用缺省的方式把Label放置在主窗口中
root.mainloop()开始了一个循环,是等待你的输入的循环。


posted @ 2007-04-04 20:50 bloodbao 阅读(246) | 评论 (0)编辑 收藏

仅列出标题
共6页: 1 2 3 4 5 6