当前位置:  技术问答>linux和unix

这个段错误,是什么原因?

    来源: 互联网  发布时间:2017-04-14

    本文导语:  typedef struct ringlink_operations { void *(*ringlink_malloc)(unsigned int size); void (*ringlink_free)(void *dest); void (*ringlink_memset)(void *dest, int value, unsigned int size); void (*ringlink_memcpy)(void *dest, void *src, unsigned int size); }ringlink...

typedef struct ringlink_operations
{
void *(*ringlink_malloc)(unsigned int size);
void (*ringlink_free)(void *dest);
void (*ringlink_memset)(void *dest, int value, unsigned int size);
void (*ringlink_memcpy)(void *dest, void *src, unsigned int size);
}ringlink_operations_t;

typedef struct ringlink
{
ringlink_operations_t *operations;
ringlink_mem_t *head;
ringlink_mem_t *read; /*Current position of read pointer.*/
ringlink_mem_t *write; /*Current position of read pointer.*/
ringlink_param_t param;
ringlink_status_t status;
}ringlink_t;

int ringlink_create(ringlink_t *ringlink, ringlink_operations_t *operations, ringlink_param_t *param)
{
int i;
ringlink_mem_t *temp;

RINGLINK_DBUG_LINE;
if((NULL==operations->ringlink_malloc) || 
(NULL==operations->ringlink_free) ||
(NULL==operations->ringlink_memcpy) ||
(NULL==operations->ringlink_memset))
{
RINGLINK_DBUG_LINE;
return -1;
}

RINGLINK_DBUG_LINE;
ringlink->operations = operations;

operations->ringlink_memcpy((char*)(&ringlink->param), (char*)param, sizeof(ringlink_param_t)); //这句正常
ringlink->operations->ringlink_memcpy((char*)(&ringlink->param), (char*)param, sizeof(ringlink_param_t));
       .........
}

static ringlink_operations_t userspace_operatioins = 
{
.ringlink_malloc = malloc,
.ringlink_free = free,
.ringlink_memset = memset,
.ringlink_memcpy = ringlik_memcpy,
};

ringlink_t tx;
int main()
{
int ret;

ringlink_param_t param;
param.key_size = 4;
param.value_size = 20;
param.total_count = 5;
param.overwrite_enable = 1;

ret = ringlink_create(&tx, &userspace_operatioins, ¶m); //这个函数里出错
printf("%s, %d ret=%dn", __FUNCTION__, __LINE__, ret);

ringlink_show(&tx);

return 0;
}

|
代码没看明白,给个提示吧。
首先,知道段错误是通常是怎么导致的。
段错误应该是访问了不可访问的内存,这个内存区要么是不存在的,要么是受到系统保护的,还有可能是缺少文件或者文件损坏。
段错误多是出现在代码段,80%的段错误在这里发生。

|

ringlink->operations->ringlink_memcpy((char*)(&ringlink->param), (char*)param, sizeof(ringlink_param_t));

改为试试

ringlink->operations->ringlink_memcpy(&ringlink->param, param, sizeof(ringlink_param_t));


    
 
 

您可能感兴趣的文章:

  • Mysql查询错误:ERROR:no query specified原因
  • Linux下怎样查c程序的错误号?程序出现错误:System error 32: Broken Pipe, 是什么原因?
  • 安装 Jbuilder7.0 居然出现错误[Error -1] 是什么原因?
  • 这个错误是什么原因Exception in thread "main" java.lang.NoClassDefFoundError:
  • 进来看看错误提示,谁来分析一下原因
  • 请教一个错误的原因。
  • 产生如下错误的原因是什么?
  • 请问Killed系统错误是什么原因造成的?如何避免?
  • 在solaris8上编译完成,链接的时候出现Segmentation Fault - core dumped这种错误,请问是什么原因??
  • 请教高手,如下编译错误是什么原因
  • 这个错误是什么原因??谢谢
  • jar错误原因
  • java.exe以及相关程序环境运行时报内存错误,请教各位什么原因?
  • jsp Unsupported encoding: gb2312 错误原因
  • 解析XML文件时出现如下错误,请教大家可能是什么原因???
  • 在Linux下面编译出现以下错误,请帮忙看看是什么原因,多谢了
  • socket连接函数connect()返回错误 errno 为 115,什么原因?谢谢
  • sendto 函数返回失败错误码14,请大侠指点什么原因,在线等待
  • pic_register_driver返回-16错误原因
  • 请问,里面这个错误是什么原因造成的
  • 我真么老有错误啊;不知道什么原因;
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ I/O 成员 bad():如果出现错误则返回true
  • Unmounting initrd failed 错误表示什么错误?可能是由什么引起的?系统原来一直运行正常,突然发现系统登陆错误,重启提示以上错误。
  • C++ I/O 成员 fail():如果出现错误则返回true
  • 在inter版solaris 8上编socket程序,在read时遇到错误,错误号14,用strerror()看不到错误描述,请解决,多谢!
  • 重装服务器后IIS网站错误(应用程序中的服务器错误)
  • 请问段错误是什么错误啊
  • windows server2008上PowerBuilder程序系统错误解决方法
  • linux安装codeblock 编译错误make: *** [all-recursive] 错误 1
  • 错误:将'const x'作为'x'的'this'实参时丢弃了类型限定问题解决
  • 求教:文件打包移植错误发生排序错误,小弟努力送分送分啦!59~~~
  • 几个windows平台C++开发错误举例
  • pic_register_driver返回-16错误原因 iis7站长之家
  • 安装hadoop时出现内存不够及其它一些常见的hadoop错误解决办法
  • iis8.5显示ASP的详细错误信息500 内部服务器错误解决方法
  • PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function
  • http错误404-文件或目录未找到 错误的解决方法
  • linux/centos安装nginx常见错误及解决办法
  • mysql启动错误之mysql启动报1067错误解决方法
  • gnu c++如何得到对于编译错误和运行错误的帮助?
  • 紧急求救:在LINUX下如何根据错误代码,查出对应的错误描述?
  • jsp有没有检查语法错误的东西,难道只能在改完了在服务器上运行然后才能找到错误吗?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,