Tôi muốn biết lý do kỹ thuật (về bộ nhớ) tại sao đoạn mã này sẽ không làm việc:bộ nhớ động tạo ra bên trong một hàm
#include <stdio.h>
#include <stdlib.h>
int* fun(int*);
int main()
{
int a=5;
int* ptr;
// ptr=(int*)malloc(sizeof(int));
fun(ptr);
a=*ptr;
printf("\n the val of a is:%d",a);
return 0;
}
void fun(int* ptr)
{
ptr = (int*)malloc(sizeof(int));
*ptr = 115;
}
Tại sao điều này không làm việc? Tôi nghĩ rằng đống (quan trọng hơn là các địa chỉ) là phổ biến cho tất cả các biến của hàm trong ngăn xếp.
Ngoài ra, tại sao tính năng này hoạt động. Nếu tôi nhận xét việc cấp phát bộ nhớ bên trong chức năng vui vẻ và bỏ ghi chú trong phần chính. Nó hoạt động tốt.
+1, nhân tiện, để có câu hỏi rõ ràng và chính xác. – DevSolar
+1 Đây là một sai lầm cực kỳ phổ biến, tôi nhớ đã làm điều tương tự từ lâu rồi (trong một thiên hà cách xa rất xa) –
@Andreas Brinck: :) – tomkaith13