小编Mik*_*ike的帖子

C Malloc运行时错误

我有以下代码片段:

typedef struct person {
    char *first ;
    char *last ;
    char *location ;
    struct person *next_person ;
} person ;

person *make_person(char *first, char *last, char *location) {
    person *personp = (person*) malloc(sizeof(struct person));

    personp->first = (char*) malloc(sizeof(strlen(first) + 1));
    personp->last = (char*) malloc(sizeof(strlen(last) + 1));
    personp->location = (char*) malloc(sizeof(strlen(location) + 1));

    strcpy(personp->first, first);
    strcpy(personp->last, last);
    strcpy(personp->location, location);

    personp->next_person = NULL;

    return personp ;
}
Run Code Online (Sandbox Code Playgroud)

当我将它与我的其余代码集成时,它开始执行,然后继续弹道.

*** glibc detected *** ./level1: free(): invalid next size (fast): 0x0804a188 ***
Run Code Online (Sandbox Code Playgroud)

知道出了什么问题吗?我觉得它与我的malloc有关.

c malloc runtime-error dynamic-memory-allocation

1
推荐指数
1
解决办法
873
查看次数

C双免费问题

我遇到了双倍的自由,我无法看到它发生在哪里.以下代码的目标是从链接列表中删除Person节点.

typedef struct person {
    char *first ;
    char *last ;
    char *location ;
    struct person *next_person ;
} person ;

struct person_list {
    int num_persons ;
    person *first_person ;
} person_list ;

extern struct person_list person_list ;

void free_person(person *person) {
    free(person->first);
    person->first = NULL;

    free(person->last);
    person->last = NULL;

    free(person->location);
    person->location = NULL;

    free(person);
    person = NULL;
}

...

    if (person_list.num_persons > 0) {
        while (person_list.num_persons > 0) {
            //Iterate to the end of the chain.
            cur_person = person_list.first_person; …
Run Code Online (Sandbox Code Playgroud)

c malloc free struct

1
推荐指数
1
解决办法
1536
查看次数

Ruby时段类

Ruby有一个代表某段时间的类吗?

IE,1小时,2分钟,3秒.

我意识到有时间类,但构造函数需要一年,一个月和一天.这些都与我正在尝试创建的抽象无关.

注意:与Sinatra合作.

ruby time sinatra

1
推荐指数
1
解决办法
2296
查看次数

Java与C简单性能测试

即运行一个简单的循环,在java和c中打印出迭代器(i)1.000.000次.

我分别使用netbeans和visual studio.

我不关心精度,但大约40秒:

netbeans(java)打印了大约500.000个数字,而windows(c)打印了大约75.000个数字

- 为什么这么大的差异?

我使用通用的intel core2duo(2.0 Ghz)pc与windows7

c java printing comparison performance

-2
推荐指数
1
解决办法
819
查看次数