sách gpt4 ai đã đi

Có an toàn/đúng khi trả về một chuỗi từ một hàm phân bổ bộ nhớ của nó cho cùng một hàm đó không?

In lại 作者:太空宇宙 更新时间:2023-11-04 01:08:42 31 4
mua khóa gpt4 Nike

我明白,如果我想从函数返回一个字符串文字或一个数组,我应该将其声明为静态的,这样当被调用的函数被返回时,内容就不会“消亡”。

但我的问题是,当我在函数内部使用 malloc 分配内存时会怎样?

在下面的函数中:

char * getLine() {

char *line = (char *) malloc(10 * sizeof(char));

printf("Enter a string: ");
fgets(line, 10, stdin);

return line;
}

即使在函数 getLine 返回后,从该函数返回的内存地址仍然安全吗?

1 Câu trả lời

I understand that if I want to return a string literal or an array from a function I should declare it as tĩnh

这不完全正确:虽然将其声明为 tĩnh 可以解决问题,但在动态内存中分配它也可以,即 trung tâm/calloc/phân bổ lại/strdup/等。所以答案是“是的,从函数返回 trung tâm-ed 内存是绝对安全的”。当然,接收动态内存的调用者必须在不再需要时处理释放-ing。

biên tập:(回应评论)事实上,在某些情况下,使用 tĩnh 可能较差,因为缓冲区将保持共享。例如,如果您决定制作一个用户输入的字符串列表,您将被迫在调用者中制作副本。此外,使用 tĩnh 会使您的函数不可重入,这在并发环境中是有害的。

关于c - 从将其内存分配给同一函数的函数返回字符串是否安全/正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17639525/

31 4 0
太空宇宙
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com