小编gnd*_*tro的帖子

char数组的创建导致内存静态?

对于以下代码,我想知道是否只在堆栈中创建了一个数组,或者是否还有一个在静态中创建的数组.我只是对字符串中的数组创建感到困惑.

char str[] = "White";
Run Code Online (Sandbox Code Playgroud)

我假设这会在堆栈中创建一个名为str的指针,该指针指向具有以下内容的数组"White\0",在静态内存中.这是正确的假设吗?

c++ stack static memory-management

1
推荐指数
1
解决办法
217
查看次数

无法在c ++中为char*分配内存

所以我无法为传递到我的shape类的构造函数中的char*分配内存,我不断收到错误说"malloc:*对象0x1001000e0的错误:释放的指针未被分配".我做了很多谷歌搜索,我找到答案,但他们没有意义,我不明白什么是错的.shapeName是受保护的char*形状成员.广场是一个形状的孩子.如果有人能够解释哪些是错的,那将非常感谢,谢谢.

我的构造函数:

Shape::Shape(Point* origin,char* name) {
   this->origin = origin;
   this->shapeName = (char*) new char(strlen(name)+1);
   strcpy(shapeName, name);
}
Run Code Online (Sandbox Code Playgroud)

我的析构函数:

Shape::~Shape() {
   delete shapeName;
   delete origin;
}
Run Code Online (Sandbox Code Playgroud)

Square的构造函数:

Square::Square(Point* origin, char* squareName, double side) 
: Shape(origin, squareName){
   side_a = side;
}
Run Code Online (Sandbox Code Playgroud)

我的电话:

Square s(new Point(5,7),"Square - S", 12);
s.display();

cout << "The area of " << s.getName() << " is: " << s.area() << endl;
cout << "The perimeter of " << s.getName() << " is: " << s.perimeter();
Run Code Online (Sandbox Code Playgroud)

c++ memory-management

1
推荐指数
1
解决办法
156
查看次数

标签 统计

c++ ×2

memory-management ×2

stack ×1

static ×1