【发布时间】:2017-06-16 18:13:25
【问题描述】:
我想使用函数为指针分配一些内存。以下是我写的代码:
#include <stdio.h>
#include <stdlib.h>
int test( unsigned char **q)
{
*q = (unsigned char *) malloc(250);
if(*q == NULL)
{
printf("\n Error: failed to allocate memory");
return -1;
}
// *q[0] = 10;
// *q[1] = 10;
*q[2] = 10;
return 0; /* Returns 0 on success, non-zero value on failure */
}
int main(void)
{
unsigned char *p;
// printf("\n &p = %u", &p);
int result = test(&p);
// printf("\n p[2] = %d", p[2]);
return 0;
}
如果我在*q[0] 或*q[1] 中写一些东西,就没有错误。但是当我尝试向*q[2] 写一些东西时,它给出了“Segmentation fault (core dumped)”。
此外,我使用 p[ ] 将所有数据都设为 0,p[0] 除外。
这段代码有什么问题?
【问题讨论】:
-
*q[2] = 10;应该是(*q)[2] = 10;。 -
缺乏知识!= 错字。投票重新开放。随意关闭作为欺骗。
-
是的..这是由于无知造成的错误。这也是我第一次处理函数内部的内存分配并返回它。感谢您的即时答复。
标签: c memory segmentation-fault malloc pointer-to-pointer