Tag: memory leaks

删除链表中的第一个节点有问题

我正在实现一个链表,它需要有一个函数,当给定一个链表和一个cstring的头时,它会找到并删除一个值为cstring的节点。 typedef struct node { char entry[21]; struct node* next; } node; /*returns true if node with phrase value found, otherwise false*/ bool findAndRemove(node* root, char phrase[21]) { if(root != NULL) { node* previous = NULL; while(root->next != NULL) { if(strcmp(root->entry, phrase) == 0)//found { if(previous == NULL)//node to delete is at head { node* […]

GCC内存泄漏检测相当于Microsoft crtdbg.h?

在Visual Studio中使用Microsoft MSVC编译器开发通用C ++库多年后,我们现在将其移植到Linux / Mac OS X(为我们祈祷)。 我已经习惯了并且非常喜欢MSVC中简单的内存泄漏检测机制: #ifdef DEBUG #define _CRTDBG_MAP_ALLOC #define NEW new( _NORMAL_BLOCK, __FILE__, __LINE__) #include #include #else #define NEW new #endif 每个内存分配都使用此NEW宏完成。 每当使用我们的库的进程终止时,控制台上会报告任何内存泄漏(尚未解除分配的块)以及最初分配内存的文件和行#。 关于这个我喜欢的部分是我不必主动“运行性能工具”或以其他方式表明我正在寻找泄漏。 每次进程终止时,都会在正常的开发过程中向我报告泄漏。 现在我们正在转向GCC世界,我发现内存泄漏检测工具,其中许多非常复杂,需要我明确表明我处于泄漏搜索模式。 我的IDE是Xcode,我已经研究了一些分配/泄漏检测工具(比如Instruments和MallocDebug),但我承认我还没有花时间完全了解它们。 事实上,我实际上必须提前说明我正在寻找泄漏,而不是自动提醒它。 我正在使用Xcode 3.2,我听说现在有一个静态分析工具的漂亮集成,但我再次没有考虑过这个。 我正在寻找一些关于我的选择的想法。 GCC和/或Xcode中是否有类似的机制? 是否有一个简单的第三方库或工具可以执行我所熟悉和喜爱的基本function? 或者我应该吮吸它并学习新的做事方式?

正确使用realloc()

从man realloc:realloc()函数返回一个指向新分配的内存的指针,该内存适用于任何类型的变量, 可能与ptr不同,如果请求失败,则返回NULL。 所以在这段代码中: ptr = (int *) malloc(sizeof(int)); ptr1 = (int *) realloc(ptr, count * sizeof(int)); if(ptr1 == NULL){ //reallocated pointer ptr1 printf(“Exiting!!\n”); free(ptr); exit(0); }else{ free(ptr); //to deallocate the previous memory block pointed by ptr so as not to leave orphaned blocks of memory when ptr=ptr1 executes and ptr moves on to another […]

OSX El Capitan中可能的内存泄漏Valgrind

我收到一个possibly lost: 2,064 bytes in 1 blocks的警告possibly lost: 2,064 bytes in 1 blocks在OSX Yosemite上使用Valgrind时possibly lost: 2,064 bytes in 1 blocks 。 有没有解决这个问题? 我用brew安装了valgrind。 以下是如何重现的示例 ~/cat hello.c int main() { return 123; } ~/uname -a Darwin mac.local 15.2.0 Darwin Kernel Version 15.2.0: Fri Nov 13 19:56:56 PST 2015; root:xnu-3248.20.55~2/RELEASE_X86_64 x86_64 i386 MacBookAir6,2 Darwin ~/clang –version Apple […]