gpt4 book ai didi

c - 在C中查找字符数组的保留内存大小

转载 作者:太空狗 更新时间:2023-10-29 15:18:03 28 4
gpt4 key购买 nike

我正在尝试学习 C,作为开始,我开始为自己的练习编写一个 strcpy。正如我们所知,原始的 strcpy 很容易出现安全问题,因此我给自己安排了编写“安全”strcpy 的任务。

我选择的路径是检查源字符串(字符数组)是否真正适合目标内存。据我了解,C 中的字符串只不过是指向字符数组的指针,以 0x00 结尾。

所以我的挑战是如何找到编译器实际为目标字符串保留了多少内存?

我试过:

sizeof(dest)

但这不起作用,因为它会返回(我后来发现)dest 的大小,它实际上是一个指针,在我的 64 位机器上,总是会返回 8。

我也试过:

strlen(dest)

但这也不起作用,因为它只会返回长度,直到遇到第一个 0x0,这不一定反射(reflect)实际保留的内存。

所以这一切都归结为以下问题:如何找到编译器为我的目标“字符串”保留了多少内存???

例子:

char s[80] = "";
int i = someFunction(s); // should return 80

什么是“someFunction”?

提前致谢!

最佳答案

一旦将 char 指针传递给正在编写的函数,您将不知道有多少内存分配给了 s。您需要将此大小作为参数传递给函数。

关于c - 在C中查找字符数组的保留内存大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14548150/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com