Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 围绕变量';x';腐败_C_Stack - Fatal编程技术网

C 围绕变量';x';腐败

C 围绕变量';x';腐败,c,stack,C,Stack,我正在操作一个C代码,它要求我提取一个值,执行计算并将该值放回原始变量中 返回值的任务会导致错误: 围绕变量“x”的运行时检查失败堆栈已损坏 代码如下: nalu->buf给出指针的值(地址不是存储在位置中的值)。您需要取消对它的引用以获取存储在位置中的值 int num = *(nalu->buf); 反其道而行之 *(nalu->buf) = newnum;/* or *(nalu->buf) = x */ 你不能这么做: byte x = newnum;

我正在操作一个C代码,它要求我提取一个值,执行计算并将该值放回原始变量中

返回值的任务会导致错误:

围绕变量“x”的运行时检查失败堆栈已损坏

代码如下:



nalu->buf
给出指针的值(地址不是存储在位置中的值)。您需要取消对它的引用以获取存储在位置中的值

int num = *(nalu->buf);
反其道而行之

*(nalu->buf) = newnum;/* or  *(nalu->buf) = x */
你不能这么做:

  byte x = newnum;
  printf("x is in c %c \n", x);
  printf("x is in d %d \n \n \n", x);  getchar();

  nalu->buf = &x;  ***// My efforts end here***

x
(这可能正成为newnum的编译器别名,因为您没有修改它)只有局部作用域!一旦您的函数退出,它就应该停止存在。但是您将它的地址保存在一个来自外部的结构中。

nalu->buf被定义为byte*buf

这意味着它是指向字节的指针

您正在将nalu->buf中的地址复制到整数变量num。这是错误的。这是一个symantic错误,但您不会因此而获得异常


从这里进一步声明一个名为“x”的变量,并将其地址复制到nalu->buf中。这是错误的,因为当这个函数退出时变量x将不存在。这就是出现运行时错误的原因。

仍然无法工作。现在它给出了一个访问冲突。你能建议一种方法,我可以提取nalu buf的值,然后将其存储回它,而不会出现错误。完成此操作。请帮助我将修改后的值放回nalu->buf@GOPIT程序正在运行,谢谢,我将最后一次用这个问题来麻烦您:我在代码中写了以下几行(以检查其工作是否正常)newnum=12345*(nalu->buf)=newnum;printf(“nalu->buf中的值为%d\n”,*(nalu->buf));但我得到的结果是:nalu->buf中的值是57,出了什么问题?提前谢谢@gopi@chickenmomo好。如果这有助于将其标记为回答正确的方式来表示感谢,那么程序正在运行,谢谢,我将最后一次用这个问题来麻烦您:我在代码中写了以下行(以检查其工作是否正常)newnum=12345*(nalu->buf)=newnum;printf(“nalu->buf中的值为%d\n”,*(nalu->buf));但我得到的结果是:nalu->buf中的值是57,出了什么问题?提前感谢@gopiother markdown在代码标记中不起作用,
**这不是粗体**
。别把人搞糊涂了
int num = nalu->buf;
int num = *(nalu->buf);
*(nalu->buf) = newnum;/* or  *(nalu->buf) = x */
  byte x = newnum;
  printf("x is in c %c \n", x);
  printf("x is in d %d \n \n \n", x);  getchar();

  nalu->buf = &x;  ***// My efforts end here***