C:读取中的地址错误

kub*_*j21 0 c io

一旦打开文件,我正在努力阅读一个非常简单的任务.使用perror,我看到报告的错误是"坏地址".这是什么意思,我该如何解决它?

int freqCheck(char * fileName) {
    /*Allocate buffer*/
    struct stat fileStat;
    stat(fileName, &fileStat);
    int size = fileStat.st_size + 1;
    void * buf = malloc(size);
    memset(buf, 0, sizeof(buf));
    if(buf = NULL) {
        printf("An error has occurred while allocating memory\n");
        return 0;
    }/*End if*/

    /*Read file*/
    int fd = open(fileName, O_RDONLY); 
    if(fd < 0) {
        perror("Open error");
        return 0;
    }/*End if*/
    ssize_t num;
    while((num = read(fd, buf, size - 1)) > 0) {
        printf("num = %d\n", num);  
    }/*End while*/
    if(num < 0) {
        perror("Read error");
        return 0;
    } else if(num == 0) {
        printf("Read worked!");
    }/*End else if*/

}/*End freqCheck*/ 
Run Code Online (Sandbox Code Playgroud)

Joh*_*ica 5

if(buf = NULL) {
Run Code Online (Sandbox Code Playgroud)

应该

if(buf == NULL) {
Run Code Online (Sandbox Code Playgroud)

您的编译器应该警告您这个常见的错误.不要忽视它的警告信息!(如果它没有警告你,那么打开警告,stat!)