编辑:忘记它。它是代码的另一部分(实际上问题是次要元素,另一个指针,但没有用malloc分配,只是声明,所以我认为内存分配在另一个地方)。这个例子现在可以编译。发送一个结构到一个函数,以前用指针定义
谢谢你们。即时通讯对不起我的错别字,但英语不是我的母语(不是一个好的借口,但我会更努力)。
嗨。我想通过一些元素(一个结构)的功能,但一些修正后,我无法读取任何方式的元素(赛格故障)
#define _FILE_OFFSET_BITS 64
#define _LARGEFILE_SOURCE
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include "pcre.h"
#include <arpa/inet.h>
#define BUFFER 1512
typedef struct OCR {
unsigned long int ocr;
struct OCR * prev;
struct OCR * next;
} ip_ocr;
int sending (ip_ocr * tmp) {
printf("%p\n",tmp); //this outpuut
printf("%lu",tmp->ocr); // at this point i get a seg fault
return 0;
}
int main() {
ip_ocr * list;
list=malloc(sizeof(ip_ocr));
list->ocr=1;
list->next=NULL;
list->prev=NULL;
sending(list);
}
那不可能是你的代码:它缺少s几个分号和'#inc'行。另外,尝试添加类似'printf(“tmp:%p \ n”,tmp);在'sending'开始的时候:我想你可能会因为某种原因得到一个NULL指针。当我编译你的代码时(修正include和语法错误之后),我没有得到段错误。 – 2010-09-15 03:31:51
刚刚他们插上了虚拟服务器。但我检查了指针并且不是null。我会重新检查我的代码(我刚刚发布了它的关键部分),当他们再次打开机器时,我会再次检查。 – Freaktor 2010-09-15 03:50:05
不要解释代码;它使得其他人难以确定实际代码中的错误以及重新输入错误的方式。然而,如果你必须解释,你应该发布可以重现问题的最小样本*。 – jamesdlin 2010-09-15 05:27:22