我正在尝试学习 C,作为开始,我开始为自己的练习编写一个 strcpy。众所周知,原始的 strcpy 很容易出现安全问题,所以我给自己写了一个“安全”的 strcpy 的任务。
我选择的路径是检查源字符串(字符数组)是否真正适合目标内存。据我了解,C 中的字符串只不过是指向字符数组的指针,以 0x00 终止。
所以我的挑战是如何找到编译器实际为目标字符串保留了多少内存?
我试过:
sizeof(dest)
但这不起作用,因为它会返回(我后来发现)dest 的大小,它实际上是一个指针,在我的 64 位机器上,总是返回 8。
我也试过:
strlen(dest)
但这也不起作用,因为它只会返回长度,直到遇到第一个 0x0,这不一定反映实际保留的内存。
所以这一切都归结为以下问题:如何找到编译器为我的目标“字符串”保留了多少内存???
例子:
char s[80] = "";
int i = someFunction(s); // should return 80
什么是“一些功能”?
提前致谢!