[问题] memcpy出现segmentation fault

楼主: blackpine (走味的咖啡)   2014-10-09 17:28:24
使用Dev-C++ 4.9.9.2做模拟, code如下:
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include <string.h>
#include <stdlib.h>
typedef unsigned char uint8_t;
typedef struct
{
uint8_t flag;
uint8_t *pData;
} __attribute__ ((packed)) test_str;
void copy_buf(test_str *pTest_inst, uint8_t *pBuf)
{
//segmentation fault
memcpy(pTest_inst->pData, pBuf, 1);
printf("%c ", *(pTest_inst->pData));
/*//Success
uint8_t t[16];
memset(t, 0, sizeof(t));
memcpy(&t, pbuf, 1);
pCosem->pData = t;
printf("%c ", *(pCosem->pData)); */
}
int main(int argc, char *argv[])
{
uint8_t t[6] = "Hello";
test_str test_inst;
memset(&test_inst, 0, sizeof(test_str));
copy_buf(&test_inst, t);
system("PAUSE");
return 0;
}
在copy_buf()函式里的memcpy, 有按照正确型态输入
但一直出现segmentation fault
后来尝试用别的方法,宣告了一组实体阵列做temp是没问题
但仍然是想知道为何一开始使用的方法会segmentation fault
作者: shiuantzuo (没有下雨的日子)   2014-10-09 17:42:00
test_inst = 0x0也没有memory alloction
作者: PoorLoser (废文制造机)   2014-10-09 20:37:00
pData 被你清成 NULL, memcpy 又要写进 NULL...处理指标参数时最好做 null check
作者: andy13579372 (痘糖)   2014-10-11 17:51:00
要先malloc个位置给test_inst->pData

Links booklink

Contact Us: admin [ a t ] ucptt.com