gpt4 book ai didi

c - 在 C 中,文字字符串地址是否总是大于任何分配的字符串地址?

转载 作者:太空狗 更新时间:2023-10-29 16:08:44 25 4
gpt4 key购买 nike

我试图将文字字符串与分配的字符串区分开来,这样我就不会不小心尝试 free() 文字字符串,这会导致段错误。

我可能尝试 free() 文字字符串的原因涉及一个可以嵌入的 strcat() 包装器:strcatex("My name ", strcatex("is ", strMyName));

不管是什么原因,请考虑:

void* mallocex(int intBytes) 
{
void* newPtr;

newPtr = malloc(intBytes);

if(newPtr == 0)
return 0;
else if(newPtr > maxPointer)
maxPointer = newPtr;

return newPtr;
}

int SafeFree(void **ptr)
{
if((unsigned long) ptr > (unsigned long) maxPointer)
return 0;
else
free(*ptr);

return 1;
}

使用示例:

char *newString;
newString = (char*) mallocex(12);

strcpy(newString, "Example one");

SafeFree(&newString);
SafeFree("Example two");

不管我的堆有多大,这是否总是有效?

最佳答案

没有这样的保证,不要依赖它。
字符串文字在只读实现定义区域的某处分配内存,无法以可移植的方式知道它是什么,因此您不应该对此做出任何假设。

关于c - 在 C 中,文字字符串地址是否总是大于任何分配的字符串地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10240360/

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