我有一个指向我的char数组的指针。
unsigned char *recvBuf;
recvBuf = (unsigned char *)malloc(sizeof(char)*RECVBUF);
然后我将其传递给定义为
的函数void setHeader(MyHeader *myHeader, unsigned char *buffer)
将前12个字节复制到结构
然后我尝试将其传递给另一个函数
Record readRecord(unsigned char *buffer, int *arrayPosition, int buffsize)
但是当我尝试使用[]访问数组的任何部分时,程序总是变得无法响应,就像在之前的功能中使用的一样。在我将它传递给函数之前,我也可以这样访问它。
我们非常感谢您的想法。
由于
编辑:
指针是一样的。
这是第二个功能
我将此代码添加到顶部并且工作正常
int k = *arrayPosition;
printf("%p \n", buffer);
printf("%c \n", buffer[k]);
这是原始代码,程序在i = * arrayposition ...
之后变得没有响应int i, j;
Record *myRecord;
Resource *myResource;
unsigned char name[255];
unsigned char data[50];
unsigned int offset;
i = *arrayPosition;
while(buffer[i] != '\0')
{
if((buffer[i] & 0xC000) == 0xC000)
{
答案 0 :(得分:2)
真的需要更多的背景来协助这里,你所说的内容并没有明显的不妥。
基础:
答案 1 :(得分:1)
输入不足以确定导致指针变坏的问题,但如果指针在您描述的函数调用之间发生变化,那么很好的方法是检查gdb。
你修改了数组中的任何字符吗?在这种情况下,您应该使用*
取消引用指针。
如果在调用原因后无法使用指针,则可以: