Cocos2d-x学习笔记(4)
Cocos2d-x中的内存管理 现有的智能内存管理技术:(1)引用计数,存在堆碎片化和管理繁琐的问题;(2)垃圾回收。 Cocos2d-x巧妙运用了前面的引用计数机制,在CCObject.h头文件中,看到CCObject的定义 class CC_DLL CCObject : public CCCopying{public: //
Cocos2d-x中的内存管理
现有的智能内存管理技术:(1)引用计数,存在堆碎片化和管理繁琐的问题;(2)垃圾回收。
Cocos2d-x巧妙运用了前面的引用计数机制,在CCObject.h头文件中,看到CCObject的定义
class CC_DLL CCObject : public CCCopying { public: // object id, CCScriptSupport need public m_uID 对象id,在脚本引擎中使用 unsigned int m_uID; Lua中的引用id,被脚本使用 // Lua reference id int m_nLuaID; protected: // count of references unsigned int m_uReference; //引用数量 // count of autorelease unsigned int m_uAutoReleaseCount; //是否设置为autorelease,自动回收池 public: CCObject(void); virtual ~CCObject(void);//虚析构函数 void release(void); //在其他地方引用,m_uReference自动加1 void retain(void); //引用结束,m_uReference自动减1<pre name="code" class="cpp"> CCObject* autorelease(void);//将对象自动放入回收池,当回收池自身被释放时,对池中的所有对象执行release()方法
但是考虑到效率问题,如果在一帧过程中生成了大量autorelease对象,导致回收池性能下降,因此在使用autorelease()密集的地方,可以手动设置一个回收池。如下:
CCPoolManger::sharedPoolManager()->push(); for(int i = 0;i addObject(dataItem); } CCPoolManager::sharedPoolManager()->pop();
工厂方法:
工厂方法是程序设计中一个经典的设计模式,指的是类中定义创建对象的接口,将实际实现推迟到子类中。分析如下代码:
<pre name="code" class="cpp">CCObject* factoryMethod() { CCObject* ret = new CCobject(); return ret; }
CCObject* factoryMethod() { CCObject* ret = new CCobject(); ret->autorelease(); return ret; }
关于传值:
将一个对象赋值给某一指针作为引用的时候,为了遵循内存管理的原则,我们需要获取新对象的引用权,释放就对象的引用权。release()和retain()的顺序尤为重要。
如下代码:
//错误代码 void SomeClass::setObject(CCObject* other) { this->object->release(); other->retain(); this->object = other; } //完善后代码 void SomeClass::setObject(CCObject* other) { other->retain(); this->object->release(); this->object = other; }
autorelease()只有在自动释放时才会进行一次释放操作,如果对象释放次数超过了应有次数,这个错误并不会被发现,只有当自动释放池被释放时才会崩溃。定位错误就很困难了。因此在开发中尽量避免滥用autorelease(),只在工厂方法等不得不用的情况下使用,尽量以release()来释放对象引用。
容器:CCArray、CCdictionary,如果直接使用STL容器,开发者需进行繁琐的内存管理操作,Cocos2d-x对这一过程进行了封装。
相关辅助宏:包含在头文件CCPlatformMacro.h里
宏 | 描述 |
CC_SAFE_DELETE(p) | 使用delete操作符删除一个C++对象p,如果p为NULL,则不进行操作 |
CC_SAFE_DELETE_ARRAY(p) | 使用delete[]操作符删除一个C++数组p,如果p为NULL,则不进行操作 |
CC_SAFE_FREE(p) | 使用free()函数删除p,如果p为NULL,则不进行操作 |
CC_SAFE_RELEASE(p) | 使用release()方法释放p的一次引用,如果p为NULL,则不进行操作 |
CC_SAFE_RELEASE_NULL(p) | 使用release()方法释放p的一次引用,再把p赋值为NULL,如果p已经为NULL,则不进行操作 |
CC_SAFE_RETAIN(p) | 使用retain()方法增加p的一次引用,如果p为NULL,则不进行操作 |
Cocos2d-x内存管理原则:
(1)程序段必须成对执行retain()和release()或者执行autorelease()来开始和结束对象的引用。
(2)工厂方法返回前,应通过autorelease()结束对该对象的引用。
(3)对象传值时,应考虑到新旧对象相同的特殊情况
(4)尽量使用release()而不是autorelease()释放对象引用,以确保性能最优。
(5)保存CCObject的子类对象时,应严格使用Cocos2d-x提供的容器,避免使用STL容器,对象必须以指针形式存入。

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment supprimer les notes de Xiaohongshu ? Les notes peuvent être modifiées dans l'application Xiaohongshu. La plupart des utilisateurs ne savent pas comment supprimer les notes de Xiaohongshu. Ensuite, l'éditeur propose aux utilisateurs des images et des textes expliquant comment supprimer les notes de Xiaohongshu. un regard ensemble ! Tutoriel d'utilisation de Xiaohongshu Comment supprimer les notes de Xiaohongshu 1. Ouvrez d'abord l'application Xiaohongshu et entrez dans la page principale, sélectionnez [Moi] dans le coin inférieur droit pour accéder à la zone spéciale 2. Ensuite, dans la zone Ma, cliquez sur la page de note comme suit : indiqué ci-dessous, sélectionnez la note que vous souhaitez supprimer ; 3. Accédez à la page de notes, cliquez sur [trois points] dans le coin supérieur droit ; 4. Enfin, la barre de fonctions s'agrandira en bas, cliquez sur [Supprimer] pour terminer.

Plus besoin de pip ? Venez apprendre à désinstaller pip efficacement ! Introduction : pip est l'un des outils de gestion de packages Python, qui peut facilement installer, mettre à niveau et désinstaller les packages Python. Cependant, nous devrons parfois désinstaller pip, peut-être parce que nous souhaitons utiliser un autre outil de gestion de packages, ou parce que nous devons vider complètement l'environnement Python. Cet article explique comment désinstaller pip efficacement et fournit des exemples de code spécifiques. 1. Méthodes de désinstallation de pip Ce qui suit présente deux méthodes courantes de désinstallation de pip.

En tant qu'utilisateur de Xiaohongshu, nous avons tous été confrontés à la situation où les notes publiées ont soudainement disparu, ce qui est sans aucun doute déroutant et inquiétant. Dans ce cas, que devons-nous faire ? Cet article se concentrera sur le thème « Que faire si les notes publiées par Xiaohongshu sont manquantes » et vous donnera une réponse détaillée. 1. Que dois-je faire si les notes publiées par Xiaohongshu manquent ? Premièrement, ne paniquez pas. Si vous constatez que vos notes manquent, il est essentiel de rester calme et de ne pas paniquer. Cela peut être dû à une défaillance du système de la plateforme ou à des erreurs opérationnelles. Vérifier les enregistrements de version est facile. Ouvrez simplement l'application Xiaohongshu et cliquez sur « Moi » → « Publier » → « Toutes les publications » pour afficher vos propres enregistrements de publication. Ici, vous pouvez facilement trouver des notes publiées précédemment. 3.Repost. Si trouvé

Comment ajouter des liens de produits dans les notes dans Xiaohongshu ? Dans l'application Xiaohongshu, les utilisateurs peuvent non seulement parcourir divers contenus mais également faire des achats, il y a donc beaucoup de contenu sur les recommandations d'achat et le bon partage de produits dans cette application si vous êtes un expert. sur cette application, vous pouvez également partager des expériences d'achat, trouver des commerçants pour coopérer, ajouter des liens dans des notes, etc. De nombreuses personnes sont prêtes à utiliser cette application pour faire du shopping, car elle est non seulement pratique, mais elle a également de nombreux experts qui en feront recommandations. Vous pouvez parcourir du contenu intéressant et voir s'il existe des produits vestimentaires qui vous conviennent. Voyons comment ajouter des liens de produits aux notes ! Comment ajouter des liens de produits aux notes de Xiaohongshu Ouvrez l'application sur le bureau de votre téléphone mobile. Cliquez sur la page d'accueil de l'application

Pour en savoir plus sur la table de couleurs matplotlib, vous avez besoin d'exemples de code spécifiques 1. Introduction matplotlib est une puissante bibliothèque de dessins Python. Elle fournit un riche ensemble de fonctions et d'outils de dessin qui peuvent être utilisés pour créer différents types de graphiques. La palette de couleurs (colormap) est un concept important dans matplotlib, qui détermine la palette de couleurs du graphique. Une étude approfondie de la table des couleurs matplotlib nous aidera à mieux maîtriser les fonctions de dessin de matplotlib et à rendre les dessins plus pratiques.

Le charme de l'apprentissage du langage C : libérer le potentiel des programmeurs Avec le développement continu de la technologie, la programmation informatique est devenue un domaine qui a beaucoup attiré l'attention. Parmi les nombreux langages de programmation, le langage C a toujours été apprécié des programmeurs. Sa simplicité, son efficacité et sa large application font de l’apprentissage du langage C la première étape pour de nombreuses personnes souhaitant entrer dans le domaine de la programmation. Cet article discutera du charme de l’apprentissage du langage C et de la manière de libérer le potentiel des programmeurs en apprenant le langage C. Tout d’abord, le charme de l’apprentissage du langage C réside dans sa simplicité. Comparé à d'autres langages de programmation, le langage C

Apprenez Pygame à partir de zéro : didacticiel complet d'installation et de configuration, exemples de code spécifiques requis Introduction : Pygame est une bibliothèque de développement de jeux open source développée à l'aide du langage de programmation Python. Elle fournit une multitude de fonctions et d'outils, permettant aux développeurs de créer facilement une variété de types. de jeu. Cet article vous aidera à apprendre Pygame à partir de zéro et fournira un didacticiel complet d'installation et de configuration, ainsi que des exemples de code spécifiques pour vous permettre de démarrer rapidement. Première partie : Installer Python et Pygame Tout d'abord, assurez-vous d'avoir

Lors de la modification du contenu du texte dans Word, vous devez parfois saisir des symboles de formule. Certains gars ne savent pas comment saisir le numéro racine dans Word, alors Xiaomian m'a demandé de partager avec mes amis un tutoriel sur la façon de saisir le numéro racine dans Word. J'espère que cela aidera mes amis. Tout d'abord, ouvrez le logiciel Word sur votre ordinateur, puis ouvrez le fichier que vous souhaitez modifier et déplacez le curseur vers l'emplacement où vous devez insérer le signe racine, reportez-vous à l'exemple d'image ci-dessous. 2. Sélectionnez [Insérer], puis sélectionnez [Formule] dans le symbole. Comme indiqué dans le cercle rouge dans l'image ci-dessous : 3. Sélectionnez ensuite [Insérer une nouvelle formule] ci-dessous. Comme indiqué dans le cercle rouge dans l'image ci-dessous : 4. Sélectionnez [Formule radicale], puis sélectionnez le signe racine approprié. Comme le montre le cercle rouge sur l'image ci-dessous :
