Skip to content

Commit 9549a19

Browse files
committed
fixed uninitialized data errors
1 parent 2752d75 commit 9549a19

1 file changed

Lines changed: 9 additions & 9 deletions

File tree

posts/unified-memory/dataElem_um_c++_2.cu

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,23 +26,23 @@ public:
2626
String() : length(0), data(0) {}
2727

2828
// Constructor for C-string initializer
29-
String(const char *s) {
29+
String(const char *s) : length(0), data(0) {
3030
_realloc(strlen(s));
31-
memcpy(data, s, length);
31+
strcpy(data, s);
3232
}
3333

3434
// Copy constructor
35-
String(const String& s) {
35+
String(const String& s) : length(0), data(0) {
3636
_realloc(s.length);
37-
memcpy(data, s.data, length);
37+
strcpy(data, s.data);
3838
}
3939

4040
~String() { cudaFree(data); }
4141

4242
// Assignment operator
4343
String& operator=(const char* s) {
4444
_realloc(strlen(s));
45-
memcpy(data, s, length);
45+
strcpy(data, s);
4646
return *this;
4747
}
4848

@@ -71,23 +71,23 @@ struct DataElement : public Managed
7171

7272
__global__
7373
void Kernel_by_pointer(DataElement *elem) {
74-
printf("On device: name=%s, value=%d\n", elem->name.c_str(), elem->value);
74+
printf("On device by pointer: name=%s, value=%d\n", elem->name.c_str(), elem->value);
7575

7676
elem->name[0] = 'p';
7777
elem->value++;
7878
}
7979

8080
__global__
8181
void Kernel_by_ref(DataElement &elem) {
82-
printf("On device: name=%s, value=%d\n", elem.name.c_str(), elem.value);
82+
printf("On device by ref: name=%s, value=%d\n", elem.name.c_str(), elem.value);
8383

8484
elem.name[0] = 'r';
8585
elem.value++;
8686
}
8787

8888
__global__
8989
void Kernel_by_value(DataElement elem) {
90-
printf("On device: name=%s, value=%d\n", elem.name.c_str(), elem.value);
90+
printf("On device by value: name=%s, value=%d\n", elem.name.c_str(), elem.value);
9191

9292
elem.name[0] = 'v';
9393
elem.value++;
@@ -127,7 +127,7 @@ int main(void)
127127

128128
printf("On host (after by-value): name=%s, value=%d\n", e->name.c_str(), e->value);
129129

130-
delete e;
130+
//delete e;
131131

132132
cudaDeviceReset();
133133
}

0 commit comments

Comments
 (0)