30/09/2018, 16:36

các dùng hàm malloc trong C

mn cho em hỏi các dùng hàm malloc để cấp phát bộ nhớ động. ví dụ nhập vào dãy n từ bàn phím và sử dụng hàm malloc để nhập vào bao nhiêu thì cấp phát bấy nhiêu. em mới học phần con trỏ nên hơi khó hiểu mong mọi người giúp cho

viết 18:46 ngày 30/09/2018

Nếu có thời gian thì bạn tham khảo bài viết này nhé, good luck!

Nguyễn Minh Dũng viết 18:39 ngày 30/09/2018

Hoặc ở đây

http://www.cplusplus.com/reference/cstdlib/malloc/

duykma viết 18:49 ngày 30/09/2018

em dùng hàm malloc như vậy có được không ạ

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

int main()
{
    int i,n, *x;
    printf("nhap vao n: ");
    scanf("%d",&n);
    x=(int*)malloc(n);
    for(i=0;i<n;i++)
    {
        printf("nhap vao phan tu thu %d: ",i+1);
        scanf("%d",(x+i));
    }
    for(i=0;i<n;i++)
    printf("%4d",*(x+i));
    
    return 0;
}
Nguyễn Minh Dũng viết 18:41 ngày 30/09/2018

Em thiếu free(x) rồi. Sau khi cấp phát vùng nhớ em phải hủy nó đi.

duykma viết 18:48 ngày 30/09/2018

à em quên. cảm ơn anh!


em chạy xong nó ra thông báo như này là bị sao anh đat?

Nguyễn Minh Dũng viết 18:47 ngày 30/09/2018

Em gửi lại toàn bộ code lên anh xem thử.

duykma viết 18:52 ngày 30/09/2018
#include <stdio.h>
#include <stdlib.h>
#include<malloc.h>

int main()
{
    int i,n, *x;
    printf("nhap vao n: ");
    scanf("%d",&n);
    x=(int*)malloc(n);
    for(i=0;i<n;i++)
    {
        printf("nhap vao phan tu thu %d: ",i+1);
        scanf("%d",(x+i));
    }
    for(i=0;i<n;i++)
    printf("%4d",*(x+i));
    free(x);

    return 0;
}
Nguyễn Minh Dũng viết 18:42 ngày 30/09/2018

Em sửa lại hàm malloc, hàm malloc của em chỉ có n bytes. Trong khi em tạo ra mảng int. mỗi int 4 bytes.

x=(int*)malloc(n*sizeof(int));
duykma viết 18:50 ngày 30/09/2018

ok em sửa đk rồi ạ

Phú Nguyễn viết 18:44 ngày 30/09/2018

Cho em hỏi là,vùng nhớ mà hàm free(x) hủy là vùng nhớ con trỏ chỉ tới hay vùng nhớ để lưu con trỏ ạ

Nguyễn Minh Trí viết 18:49 ngày 30/09/2018

cấp phát động dùng new có khác gì với malloc k

Bài liên quan
0