zsh:总线错误/a.out写入(char*)void*时


void*ft_print_memory(void *addr, unsigned int size)
{
char *memory;
if (size == 0)
return (addr);
memory = (char *)addr;
memory[16] = ''; // the error raise from this line
return (addr);
}

我是C编程的新手,在MacBook m1 Montery上与gcc合作。。。类型转换是在堆栈还是堆上创建变量?typecast是否创建了像malloc这样的有效字符串?

从主调用

int main (int argc, const char *argv[])
{
char *str;
str = "0123456789abcdefghijklmnopqrstuvwxyz";
ft_print_memory(str, 16);
return (0);
}

例如,此变体有效:

include <stdio.h>
#include <string.h>
void ft_print_memory(void *, unsigned int);

int main (int argc, const char *argv[]){
char str[64] = "0123456789abcdefghijklmnopqrstuvwxyz";
ft_print_memory(str, 16);
fprintf(stdout,"%sn",str);
return 0;
}
void ft_print_memory(void *addr, unsigned int size){
char *memory;
if (size == 0)        return ;
memory = (char *)addr;
memory[16] = ''; // the error raise from this line
//    return (addr);
}

相关内容

最新更新