yuchu3d 2022-04-15 12:19 采纳率: 80%
浏览 123
已结题

C语言 关于指针和memcpy的一个例子

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 10
int main(void)
{
char* target=(char*)malloc(sizeof(char));
for(int i=0;i<N;i++){
memcpy(target+i,"a",sizeof(char));
}
puts(target);
free(target);
return 0;
}

看了这个 讲述 memcpy函数的用法的例子,比较困惑, target是指向 malloc分配一个字符的内存的指针, target+i 岂不是越界 无定义的指针,这样写 难道不是错误的吗? 更改 target+i这块内存上的值 ,不是很危险的吗?

  • 写回答

11条回答 默认 最新

  • 万小橘 2022-04-15 12:36
    关注
    获得0.25元问题酬金

    malloc不是动态分配内存?target+i应该是地址变了

    评论

报告相同问题?

问题事件

  • 系统已结题 4月23日
  • 创建了问题 4月15日