c/c++开发分享创建此数组时分配的内存在哪里? (C)

假设我做了类似的事情:

char* test[] = {"foo","bar","car"}; 

如果我做了很长的路,那究竟是什么呢? 这会自动创建我需要释放的内存吗? 我有点困惑。 谢谢。

    test是位于堆栈上的char指针数组,字符串文字"foo""bar""car"存储在只读位置。 你需要一无所获。

    test[0]test[1]test[2]指向只读数据。 请阅读C中的作用域规则和变量的生命周期。默认情况下,块中没有存储类说明符的变量具有auto存储类说明符,这意味着具有本地生存期的变量。

     { char* test[] = {"foo","bar","car"}; } //cannot access test here test [0] = "new"; // Compile time error - 'test' undeclared 

    尝试将“bar”修改为“tar”时会产生运行时错误:

     char* test[] = {"foo","bar","car"}; test[1][0] = "tar"; // Run-time error 

    然而,这是很好的test[0]开始指向"foo" "new" "foo"

     test [0] ="new"; 

    "foo"的引用丢失了。

    你正在声明一个指针数组。 指针指向字符串文字。

    变量test遵循正常规则,如果它是自动变量(某个函数内的范围),当超出函数时,它会超出范围,因此您不必释放内存。 如果它是静态分配的(全局或static变量),它的寿命与程序一样长,因此您也不必释放内存。

    指针指向的字符串文字具有静态存储,因此您也不会释放它们。

    Test是一个charecter pointers数组。当为数组提供值初始化时,C允许将方括号留空[]。 在这种情况下,编译器将假定数组的大小与大括号{ }之间包含的值的数量相匹配。没有必要释放。

    漫长的方法是使用malloc,而malloc是字符串的大小。

    测试将被推到堆上

      以上就是c/c++开发分享创建此数组时分配的内存在哪里? (C)相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注(猴子技术宅)。

      本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

      如若转载,请注明出处:https://www.ssfiction.com/c-cyuyankaifa/545327.html

      发表评论

      电子邮件地址不会被公开。 必填项已用*标注