当前位置: 技术问答>linux和unix
传char * 字符串问题
来源: 互联网 发布时间:2017-05-11
本文导语: 下面是一个函数,将int数组转化为字符数组 void unIntArraryTochar(unsigned *sha1,char *md, int size) { md = (char*)malloc(20*sizeof(char)); int j = 0; for(int i=0; i>24); md[++j] = (char)(value>>16); md[++j]...
下面是一个函数,将int数组转化为字符数组
接着是我的调用://sha1是非空的,size也已经赋值了
但是我每次运行到这里,调用函数的时候出现段错误。于是我就把md的申请放到了调用unIntArraryTochar的前面,如下:
这次运行就不会出错了。
我想知道为什么传入空字符串给函数会出现段错误?谢谢大神们帮忙!
void unIntArraryTochar(unsigned *sha1,char *md, int size)
{
md = (char*)malloc(20*sizeof(char));
int j = 0;
for(int i=0; i>24);
md[++j] = (char)(value>>16);
md[++j] = (char)(value>>8);
md[++j] = (char)(value);
++j;
}
接着是我的调用://sha1是非空的,size也已经赋值了
char *md = NULL;
unIntArraryTochar(sha1,md,size);
但是我每次运行到这里,调用函数的时候出现段错误。于是我就把md的申请放到了调用unIntArraryTochar的前面,如下:
char *md = (char *)malloc(sizeof(char)*20);
unIntArraryTochar(sha1,md,size);
这次运行就不会出错了。
我想知道为什么传入空字符串给函数会出现段错误?谢谢大神们帮忙!
|
char *md = NULL;
因为你没有分配内存来存放,就像你把东西挪入某个地方首先要有空间。
因为你没有分配内存来存放,就像你把东西挪入某个地方首先要有空间。