Cùng đặt vấn đề nào (bản số 2)

Is there any problem?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void myfunction(char *q){
     memcpy (q ,"hello",5);
}

int main(){
     char * p;
     myfunction(p);
     printf(p);
}

Chưa cấp phát vùng nhớ cho char * p mà đã copy dữ liệu cho nó là hành vi nguy hiểm. Vì khi đó p có thể đang trỏ tới bất kỳ đâu. Việc copy 5 bytes vào vùng không thuộc sở hữu của p có thể gây crash chương trình.

4 Likes

Chính xác, câu này không khó lắm để em post câu khác

2 Likes

Hôm nay @Dung_Kon toàn post mấy câu khó khó không :smiley: Tới giờ nghỉ trưa a mới có thời gian coi hết. Mà toàn mấy câu hay hay liên quan đến kiến thức C cực kỳ cơ bản.

2 Likes

Cho em hỏi câu này mà muốn sửa thì phải sửa ntn ạ?

Chỉ có sửa lại thành char[50] thôi chứ để * là văng, vì không trỏ đến mem hợp lệ.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?