有關malloc的一個小點

以下代碼是利用指針完成字符串的複製,但是會出現運行時錯誤:段錯誤。我們知道段錯誤是跟內存地址的使用不當有關的。細細觀察代碼,發現了沒有爲main函數中co開闢地址空間,而在打印時出現了未知地址問題。怎麼解決呢?malloc函數就用到了。

#include<stdio.h>

#include<stdlib.h>
void copy(char *s,char *q){
        while(*s!='\0'){
                *q=*s;
                s++;
                q++;
        }
        *q='\0';
}
void main(){
        char *co,*or;
        or="hello";
        copy(or,co);
        printf("%s",co);
}
  可以在main函數中copy(or,co)前爲co分配動態空。 co=malloc(sizeof(char)*10),加上這行代碼就可以成功運行了。當然,使用完後記得及時釋放分配的地址。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章