- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
不确定 16 字节到底在哪里没有被释放。任何关于最后一个免费在哪里的想法都会很棒。我对 C 和一般编程也很陌生。
==23862== HEAP SUMMARY:
==23862== in use at exit: 16 bytes in 1 blocks
==23862== total heap usage: 25 allocs, 24 frees, 2,146 bytes allocated
==23862==
==23862== 16 bytes in 1 blocks are definitely lost in loss record 1 of 1
==23862== at 0x4A069EE: malloc (vg_replace_malloc.c:270)
==23862== by 0x400B5D: read_from_file (sorting.c:145)
==23862== by 0x40093F: main (sorting.c:73)
==23862==
==23862== LEAK SUMMARY:
==23862== definitely lost: 16 bytes in 1 blocks
==23862== indirectly lost: 0 bytes in 0 blocks
==23862== possibly lost: 0 bytes in 0 blocks
==23862== still reachable: 0 bytes in 0 blocks
==23862== suppressed: 0 bytes in 0 blocks
但是,如果我取出第 146 行,所有内容都会被释放,并且我会从 4 个上下文中收到四个错误,表示条件跳转或移动取决于未初始化的值。
==31575== Conditional jump or move depends on uninitialised value(s)
==31575== at 0x400E31: length (sorting.c:238)
==31575== by 0x400C7D: bubble_sort (sorting.c:186)
==31575== by 0x4009B8: main (sorting.c:80)
==31575==
==31575== Conditional jump or move depends on uninitialised value(s)
==31575== at 0x400DF3: display (sorting.c:225)
==31575== by 0x4009FC: main (sorting.c:83)
==31575==
==31575== Conditional jump or move depends on uninitialised value(s)
==31575== at 0x4A063A3: free (vg_replace_malloc.c:446)
==31575== by 0x400B2F: destroy (sorting.c:138)
==31575== by 0x400A08: main (sorting.c:85)
==31575==
==31575== Conditional jump or move depends on uninitialised value(s)
==31575== at 0x400B41: destroy (sorting.c:134)
==31575== by 0x400A08: main (sorting.c:85)
我的代码是:
typedef struct Data_ {
char *name;
struct Data_ *nextData;
} Data;
int main(int argc, char **argv)
{
Data *head = NULL;
const int size = atoi(argv[2]);
head = read_from_file(argv[1], size); //line 73
head = bubble_sort(head);
destroy(head);
head = NULL;
return 0;
}
Data* read_from_file(const char *file, const int size)
{
Data *head = malloc(sizeof(Data)); //line 145
head = NULL; //line 146
FILE* in;
in = fopen(file,"r");
if(file == NULL)
{
printf("Unable to open %s\n",file);
exit(1);
}
char name[MAX_STR_LEN];
int i = 0;
for(;i<size;i++)
{
fscanf(in,"%s", name);
push(&head,name);
}
fclose(in);
return head;
}
void destroy(Data* list)
{
Data *current = list;
Data *needs_freeing;
while(current)
{
needs_freeing = current;
current = current->nextData;
free(needs_freeing->name);
free(needs_freeing);
}
}
void push(Data **head, char *name)
{
Data *new = malloc(sizeof(Data));
new->name = malloc(sizeof(char)*MAX_STR_LEN);
if(new)
{
strcpy(new->name, name);
new->nextData = *head;
*head = new;
}
}
Data* bubble_sort(Data *list)
{
Data *current;
Data *previous;
char temp[MAX_STR_LEN];
int list_length = length(list);
int i, j;
for(i=1;i<list_length;i++)
{
previous = list;
current = previous->nextData;
for(j=0;j<list_length-2;j++)
{
if(strcmp(previous->name, current->name) > 0)
{
previous = swap(previous, current);
}
previous = previous->nextData;
current = current->nextData;
}
}
return list;
}
Data* swap(Data *left, Data *right)
{
char temp[MAX_STR_LEN];
strcpy(temp, left->name);
strcpy(left->name, right->name);
strcpy(right->name, temp);
return left;
}
void display(Data *list)
{
FILE* file;
file = fopen("out.txt", "w");
if(file == NULL)
{
printf("Unable to write to file\n");
exit(1);
}
while(list->nextData != NULL)
{
fprintf(file,"%s\n",list->name);
list = list->nextData;
}
fclose(file);
}
int length(Data* list)
{
int count = 0;
Data* current = list;
while(current)
{
current = current->nextData;
++count;
}
return count;
}
最佳答案
Data *head = malloc(sizeof(Data)); //line 145
head = NULL; //line 146
这是内存泄漏。您为大小为 sizeof (Data)
的对象分配内存,但随后覆盖了指针。此外,如果您计划在 *head 中读取或写入,那么在不使用分配的对象的情况下使指针无效是没有意义的。
关于c - Valgrind 泄漏不确定在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24497589/
IntentReceiver 正在泄漏 由于 onDetachedFromWindow 在某些情况下未被调用。 @Override protected void onDetachedFromWind
好吧,我很难追踪这个内存泄漏。运行此脚本时,我没有看到任何内存泄漏,但我的 objectalloc 正在攀升。 Instruments 指向 CGBitmapContextCreateImage >
我编写了一个测试代码来检查如何使用 Instrument(Leaks)。我创建了一个单一 View 应用程序,单击按钮后我加载了一个像这样的新 View ... - (IBAction)btn_clk
我正在使用这个简单的代码并观察单调增加的内存使用量。我正在使用这个小模块将内容转储到磁盘。我观察到它发生在 unicode 字符串上而不是整数上,我做错了什么吗? 当我这样做时: >>> from u
我有以下泄漏的代码。 Instruments 表示,泄漏的是 rssParser 对象。我“刷新”了 XML 提要,它运行了该 block 并且发生了泄漏...... 文件.h @interface
我在我编写的以下代码片段中发现了内存泄漏 NSFileManager *fileManager=[[NSFileManager alloc] init]; fileList=[[fileManager
因此,我正在开发HTML5 / javascript rts游戏。观察一直有几种声音在播放。因此,对我来说,是一段时间后声音听起来像是“崩溃”,并且此浏览器选项卡上的所有声音都停止了工作。我只能通过重
下面是我正在使用的一段代码及其输出。 my $handle; my $enterCount = Devel::Leak::NoteSV($handle); print "$date entry $en
在这篇关于 go-routines 泄漏的帖子之后,https://www.ardanlabs.com/blog/2018/11/goroutine-leaks-the-forgotten-sende
我想知道为什么在执行 ./a.out 后随机得到以下结果。有什么想法我做错了吗?谢谢 http://img710.imageshack.us/img710/8708/trasht.png 最佳答案 正
我正在 Swift 中开发一个应用程序,在呈现捕获我放在一起的二维码的自定义 ViewController 后,我注意到出现了巨大的内存跳跃。 该代码本质上基于以下示例:http://www.appc
下面是我的 javascript 代码片段。它没有按预期运行,请帮我解决这个问题。 function getCurrentLocation() { console.log("insi
我们在生产环境中部署了 3 个代理 Kafka 0.10.1.0。有些应用程序嵌入了 Kafka Producer,它们将应用程序日志发送到某个主题。该主题有 10 个分区,复制因子为 3。 我们观察
我正在使用仪器来检测一些泄漏,但有一些泄漏我无法解决; NSMutableString *textedetails = [[NSMutableString alloc] init];
如果我使用性能工具测试我的代码 - 泄漏,它没有检测到任何泄漏。这是否意味着代码没有泄漏任何内存? 我有一个越狱的 iPhone,我可以监控可用内存。如果有人知道,那就是 SBSettings。我测试
我在从 AddressBook 中获取图像时遇到了很大的问题,下面我粘贴了我的代码。此 imageData 从未被释放,在我的 Allocations Instruments 上它看起来总是在内存中它
- (NSMutableArray *)getArrayValue:(NSArray *)array{ NSMutableArray *valueArray = [NSMutableArra
Instruments 工具说这是一个泄漏,有什么想法吗? 我在 for 循环结束时释放变量对象 在上述方法的开头,这就是我设置变量对象的方式,即自动释放; NSMutableArray *varia
我正在跟踪我的 iOS 应用程序的内存泄漏,我有一个奇怪的泄漏导致我的应用程序崩溃......负责的框架是:CGImageMergeXMPPropsWhithLegacyProps。在某些时候,我的应
我正在尝试使用 NSOperationQueue 在后台线程中执行一个方法,如下所示: NSOperationQueue *queue = [NSOperationQueue new]; NS
我是一名优秀的程序员,十分优秀!