我有以下代码片段:
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有关.
我遇到了双倍的自由,我无法看到它发生在哪里.以下代码的目标是从链接列表中删除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) Ruby有一个代表某段时间的类吗?
IE,1小时,2分钟,3秒.
我意识到有时间类,但构造函数需要一年,一个月和一天.这些都与我正在尝试创建的抽象无关.
注意:与Sinatra合作.
即运行一个简单的循环,在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